2011-10-03 114 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();