2011-10-03 109 views
2

从网络浏览器下载图像时出现问题。我想直接下载图像,但是它在浏览器中打开。我正在使用asp.net。从浏览器下载图像

我的HTML代码:

<a href ="http://example.com/file/image.jpg" target="_blank" /> Download </a> 
+0

相关答案 - http://stackoverflow.com/questions/7631110/no-more-postback-after-file-download-in -asp-net/7631182#7631182 – adatapost

回答

4

你需要在这里做的是修改HTTP标头在请求浏览器中显示的方式“文件对话框”框为你的形象,而不是简单地显示它在屏幕上。

为此,您需要修改Content-Disposition标题并将其设置为attachment。在ASP.NET中做到这一点,你可以做到以下几点:

Response.Clear() 
Response.AppendHeader("Content-Disposition", "attachment; filename=somefilename") 

但要确保你的文件作出回应此之前你做。

你也可能要更改如下:

Response.ContentType = "image/jpeg" 

这将允许浏览器regonise并显示在文件对话框的图像图标。最后送的文件,你会再调用:

Response.TransmitFile(Server.MapPath("/myimage.jpg")); 
Response.End(); 

但是请了解你这里做的是什么修改浏览器的服务器请求 - 它不是在绑定反正抓落实。

+0

对downvote有何评论? –

+0

要添加到此答案 - 为了得到这个代码,你必须把它放在一个ASHX处理程序(或者你可以使用一个空的ASPX页面,但ASHX更适合)。因此,不是指向'image.jpg'的链接,而是指向'image.ashx',并且m.edmondson的代码将位于.ashx.cs文件中。 (PS我不是downvoter) –

0

试试下面的方法(假设你使用C#)

Response.ContentType = "image/jpg"; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=myimage.jpg"); 
    Response.TransmitFile(Server.MapPath("/images/image.jpg")); 
    Response.End();