首页 新闻 搜索 专区 学院

图片下载弹出窗口

0
悬赏园豆:100 [已解决问题] 解决于 2011-11-11 18:15

1.图片地址为url路径 例如:http://home.cnblogs.com/images/ico_question.gif

2.点击 下载图片  超连接下载此图片

3.下载方式 为弹出窗口 提供 打开 保存 取消功能的届面

谢谢 在线等

问题补充:

这些虚拟路径是不行的 我那个是URL路径

Server.MapPath

FileInfo

这种都是不支持URL格式的

lbaichun的主页 lbaichun | 初学一级 | 园豆:12
提问于:2011-11-11 14:29
< >
分享
最佳答案
0

示例程序:

        protected void Page_Load(object sender, EventArgs e)
{
string path=Server.MapPath(@"Images\ico_question.gif");
Open(path);
}

public void Open(string FullFileName)
{
try
{
FileInfo DownloadFile = new FileInfo(FullFileName);
if (DownloadFile.Exists)
{
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.ASCII));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}
else
{
Response.Write("文件路径有误!");
}
}
catch(Exception ex)
{
Response.Write(ex.Message);
}
}

你调用open方法就OK了

收获园豆:100
artwl | 专家六级 |园豆:16536 | 2011-11-11 14:40

这些虚拟路径是不行的 我那个是URL路径

Server.MapPath

FileInfo

这种都是不支持URL格式的

lbaichun | 园豆:12 (初学一级) | 2011-11-11 14:48

@lbaichun: 换成这样:

        protected void Page_Load(object sender, EventArgs e)
{
Open("http://home.cnblogs.com/images/ico_question.gif");
}

public void Open(string FullFileName)
{
Response.AppendHeader("Content-Disposition", "attachment;filename=ico_question.gif");
Response.ContentType = "application/octet-stream";
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(FullFileName);
HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse();
Stream readStream = myWebResponse.GetResponseStream();
int chunkSize = 4096;
byte[] bytes = new byte[chunkSize];
int intBytesRead = readStream.Read(bytes, 0, bytes.Length);
while (intBytesRead > 0)
{
Response.OutputStream.Write(bytes, 0, intBytesRead);
bytes = new byte[chunkSize];
intBytesRead = readStream.Read(bytes, 0, bytes.Length);
}
readStream.Close();
myWebResponse.Close();
}



artwl | 园豆:16536 (专家六级) | 2011-11-11 14:53

@天行健 自强不息: 你的问题解决没有啊,如果解决了快点结帖哦^_^

artwl | 园豆:16536 (专家六级) | 2011-11-11 15:22

@天行健 自强不息: 谢谢了 下面的方法是可行的 哈哈...

lbaichun | 园豆:12 (初学一级) | 2011-11-11 18:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册