pCloud Partner Program

利用ashx傳送檔案下載

程式技術/.NET 2009/12/14 17:32
views: 130145 times
在 asp.net 中, 若要實現檔案下載處理的方式(並且要進行 url 隱藏及下載管理), 可以利用 ashx (generic handler) 來進行, 方式很單純, 主要是在 header 上下一些手腳, 方式如下:



使用的方式若是處理檔案下載, 可以利用 application/octet-stream 這個 ContentType header , 並配合 Content-Disposition header 中, 利用 attachment; filename=xxxx 的方式來將檔案名稱指定給客戶端, 參考資料: http://support.microsoft.com/?scid=kb%3Ben-us%3B260519

而之後再利用 TransmitFile() 方法, 將在 server 上的檔案讀取出來並傳送到客戶端, 至於使用 TransmitFile 方法和其他方法的比較如這篇文章所示: http://blog.miniasp.com/post/2008/03/Caution-about-ASPNET-Response-a-Large-File.aspx

一般來說, 若是大檔案, 可以直接利用 TransmitFile 的方式來進行, 但不是太大型檔案, 有續傳需求時, 則不適用, 但效率上是以 TransmitFile 的效率最佳(因為不用先整個讀到記憶體中).

其他人的比較資料:
[ASP.NET] 無網址的檔案下載 - 進階研究 http://gogo1119.pixnet.net/blog/post/27407222

[2010/2/12 14:48]
相關文章: http://edu.uuu.com.tw/data_article/article/100212tips.htm

top

Trackback Address :: http://diary.tw/tim/trackback/854

  1. Rakce 2010/03/22 13:47 MODIFY/DELETE REPLY

    請問,若檔案是寫入資料庫Image型別的欄位裡,該如何下載?(有其它欄位記錄檔名及副檔名)

    • Timothy 2010/03/23 12:09 MODIFY/DELETE

      你好. 可以直接讀出來至 byte[], 並使用 Response.BinaryWrite 輸出或使用 Stream 對Response.OutputStream 寫入即可. 記得一樣要將 ContentType 寫清楚即可.

Write a comment


PREV : [1] : ... [301] : [302] : [303] : [304] : [305] : [306] : [307] : [308] : [309] : ... [526] : NEXT



Patriot美商博帝 BURST 960G 2.5吋 SSD固態硬碟
TEAM十銓 L5 Lite 3D 1TB 2.5吋 SSD固態硬碟
統一 番茄汁(6入/組)
UNITEK TYPE-C 轉VGA/HDMI/PD充電/HUB 鋁合金多功能轉接器
亞果元素 CASA Hub VH1 Type-C 轉 VGA - HDMI二合一顯示轉接器


 Waiting...