我的链接中既有图片下载,又有文档下载,当点击文档时可以正常下载,点击图片下载时就直接打开了,搞了两小时用以下方法解决了,贡和我一样的菜鸟们借鉴!
第一步:在页面中添加一个iframe <iframe src="" runat="server" id="downloadfram" name="downloadfram" width="600px" height="0px"></iframe>;
第二步:将要下载的图片地址绑定到事件中 <a href="#" οnclick="downLoads('<%# Server.UrlEncode(Eval("Ext").ToString())%>')">下载</a>
第三步:编写客户端事件,改变iframe地址
function downLoads(imgUrl) {
$("#downloadfram").attr("src", "DownLoad.aspx?imgUrl=" + imgUrl);
}
此处应用了jQuery,需要在页面中引入。
第四步:新增一个下载页面 DownLoad.aspx
第五步:编写下载页面服务器端代码
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["imgUrl"] != null)
{
string dirPath = Server.MapPath("/") + Server.UrlDecode(Request.QueryString["imgUrl"].ToString().Replace("~/",""));
download_Click(dirPath);
}
}
protected void download_Click(String path)
{
if (File.Exists(path))
{
FileInfo DownloadFile = new FileInfo(path);
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.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}
}