用ASP.NET上傳大檔案
我們在上傳大檔案時都遇到過這樣或那樣的問題。設定很大的maxRequestLength值並不能完全解決問題,因為ASP.NET會block直到把整個檔案載入記憶體後,再加以處理。實際上,如果檔案很大的話,我們經常會見到Internet Explorer顯示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎麼也catch不了這個錯誤。為什麼?因為這是個client side錯誤,server side端的Application_Error是處理不到的,可以參考這個帖子研究一下產生這個錯誤的機理。
[@more@]解決的方法是利用隱含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法從IIS為ASP.NET建立的pipe裡分塊讀取資料
IServiceProvider provider = (IServiceProvider) HttpContext.Current;
HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
byte[] bs = wr.GetPreloadedEntityBody();
....
if (!wr.IsEntireEntityBodyIsPreloaded())
{
int n = 1024;
byte[] bs2 = new byte[n];
while (wr.ReadEntityBody(bs2,n) >0)
{
.....
}
}
Chris Hynes為我們提供了這樣的一個方案(用HttpModule),該方案除了允許你上傳大檔案外,還能實時顯示上傳進度:
這裡有他講座的PPT檔案:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10291852/viewspace-974261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Asp.Net 上傳大檔案專題(1)--概述:上傳大檔案的難點ASP.NET
- asp.net 上傳大檔案大小控制方案ASP.NET
- ASP.NET Core 檔案上傳ASP.NET
- ASP.NET上傳大檔案報錯,IIS7.0ASP.NET
- [ASP.NET]大檔案無法上傳排查經驗分享ASP.NET
- Asp.Net 上傳大檔案專題(2)--頁面生成流程ASP.NET
- ASP.NET(C#) MOSS站點下 上傳大檔案ASP.NETC#
- Java如何上傳大檔案Java
- 【巴山】Asp.NET大檔案上傳元件開發總結(二)---提取檔案內容ASP.NET元件
- 檔案上傳用XML (轉)XML
- Django檔案上傳 -- 適用於單一小檔案上傳Django
- Asp.Net音訊檔案上傳和播放ASP.NET音訊
- php檔案上傳之多檔案上傳PHP
- post 表單大檔案上傳
- linux大檔案上傳(nc)Linux
- 大檔案上傳實踐分享
- 用ASP.net判斷上傳檔案型別的三種方法ASP.NET型別
- .Net通用大檔案上傳類(可上傳大檔案,vs2005)
- ASP.NET MVC使用input標籤上傳檔案ASP.NETMVC
- ASP.NET中檔案上傳下載方法集合ASP.NET
- asp.net 解決檔案上傳大小的限制ASP.NET
- ASP.NET 2.0 多檔案上傳小經驗ASP.NET
- 用Azure CLI批量上傳檔案
- nodeJs + js 大檔案分片上傳NodeJS
- php大檔案上傳注意事項PHP
- 搗鼓系列:前端大檔案上傳前端
- 如何提升大容量檔案上傳效能
- Asp.net WebApi 傳遞json資料以及上傳檔案ASP.NETWebAPIJSON
- 大檔案上傳、斷點續傳、秒傳、beego、vue斷點GoVue
- 單個檔案上傳和批量檔案上傳
- ASP.NET上傳檔案對檔案型別的高階判斷ASP.NET型別
- 檔案上傳
- 1. 大檔案上傳如何斷點續傳斷點
- Asp.Net 上傳大檔案專題(3)--從請求流中獲取資料並儲存為檔案[上]ASP.NET
- ASP.NET Core 上傳檔案到共享資料夾ASP.NET
- Asp.net core 2.0 +SPA檔案上傳注意事項ASP.NET
- asp.net 檔案上傳和下載管理原始碼ASP.NET原始碼
- 實現ASP.NET中FileUpload多檔案上傳ASP.NET