我使用asp.net 3.5和C#。彈出在asp.net保存圖像
我有一個圖像,我想用戶可以下載。像,會有一個下載按鈕或鏈接。當用戶點擊這個鏈接時,他會彈出一個提示,將該圖像保存到他的桌面。
我試圖與
<a href ="path" > </a>
但它是在其他頁面打開圖像,我希望用戶被提示保存或查看圖像,
請幫助
謝謝提前
我使用asp.net 3.5和C#。彈出在asp.net保存圖像
我有一個圖像,我想用戶可以下載。像,會有一個下載按鈕或鏈接。當用戶點擊這個鏈接時,他會彈出一個提示,將該圖像保存到他的桌面。
我試圖與
<a href ="path" > </a>
但它是在其他頁面打開圖像,我希望用戶被提示保存或查看圖像,
請幫助
謝謝提前
您需要擁有另一個頁面,或者更好的是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>
您需要編寫IHttpHandler
服務器圖像以及Content-Disposition
標頭。
例如:
Response.AppendHeader("Content-Disposition", "attachment; filename=\"MyImage.png\"");
Response.TransmitFile(path);
你很可能會通過在查詢字符串的圖像名稱。
如果是這樣,請確保它不包含/
或\
,否則攻擊者將能夠讀取任意文件。
你總是可以限制允許使用,或者至少,驗證它們位於圖像目錄的路徑。確保你沒有任何惡作劇並將其限制爲一個名字很重要,這可能是最簡單的方法。 – tvanfosson 2010-05-26 20:00:18
謝謝!這解決了我的問題。 – Zerotoinfinity 2010-05-26 19:44:42