2010-05-26 55 views
2

我使用asp.net 3.5和C#。彈出在asp.net保存圖像

我有一個圖像,我想用戶可以下載。像,會有一個下載按鈕或鏈接。當用戶點擊這個鏈接時,他會彈出一個提示,將該圖像保存到他的桌面。

我試圖與

<a href ="path" > </a> 

但它是在其他頁面打開圖像,我希望用戶被提示保存或查看圖像,

請幫助

謝謝提前

回答

0

您需要擁有另一個頁面,或者更好的是HttpHandler,它將圖像路徑作爲查詢字符串的一部分,或作爲發送帶有Content-Disposition屬性設置的附件的post參數。以這種方式設置內容配置將導致瀏覽器顯示文件下載對話框。一個稍微簡單的方法,儘管它取決於用戶做了一些額外的事情,只需要讓鏈接在新頁面中打開圖像,並讓用戶右鍵單擊並執行「另存爲」。

<a href="/path/to/handler?image=name-of-image-file">Download</a> 

<a href="/path/to/image" target="_blank"> 
    Load Image in New Window then Use Save As</a> 
+0

謝謝!這解決了我的問題。 – Zerotoinfinity 2010-05-26 19:44:42

3

您需要編寫IHttpHandler服務器圖像以及Content-Disposition標頭。

例如:

Response.AppendHeader("Content-Disposition", "attachment; filename=\"MyImage.png\""); 
Response.TransmitFile(path); 

你很可能會通過在查詢字符串的圖像名稱。
如果是這樣,請確保它不包含/\,否則攻擊者將能夠讀取任意文件。

+1

你總是可以限制允許使用,或者至少,驗證它們位於圖像目錄的路徑。確保你沒有任何惡作劇並將其限制爲一個名字很重要,這可能是最簡單的方法。 – tvanfosson 2010-05-26 20:00:18