用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]大檔案無法上傳排查經驗分享ASP.NET
- 前端大檔案上傳/分片上傳前端
- .NET Core 如何上傳檔案及處理大檔案上傳
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- linux大檔案上傳(nc)Linux
- Java如何上傳大檔案Java
- Asp.net WebApi 傳遞json資料以及上傳檔案ASP.NETWebAPIJSON
- ASP.NET MVC使用input標籤上傳檔案ASP.NETMVC
- post 表單大檔案上傳
- 大檔案上傳實踐分享
- nodeJs + js 大檔案分片上傳NodeJS
- ASP.NET Core 上傳檔案到共享資料夾ASP.NET
- 單個檔案上傳和批量檔案上傳
- php大檔案上傳注意事項PHP
- net6 WebAPI大檔案上傳WebAPI
- 搗鼓系列:前端大檔案上傳前端
- 如何提升大容量檔案上傳效能
- 檔案上傳
- 大檔案上傳、斷點續傳、秒傳、beego、vue斷點GoVue
- 用AppUploader輕鬆上傳IPA檔案APP
- 1. 大檔案上傳如何斷點續傳斷點
- 學習ASP.NET Core Blazor程式設計系列十七——檔案上傳(上)ASP.NETBlazor程式設計
- Uedior上傳大檔案超時報錯
- 大規格檔案的上傳優化優化
- 檔案上傳之三基於flash的檔案上傳
- PHP上傳檔案PHP
- 檔案上傳概述
- ajaxfileupload 檔案上傳
- Flask——檔案上傳Flask
- Linux上傳檔案Linux
- 檔案上傳漏洞
- minio上傳檔案
- SpringBoot上傳檔案Spring Boot
- JavaScript 檔案上傳JavaScript
- Git上傳檔案Git
- Android大檔案上傳秒傳之MD5篇Android
- JAVA實現大檔案分片上傳斷點續傳Java斷點
- dcat-admin 大檔案上傳(前端直傳解決)前端
- Bootstrap檔案上傳元件應用:bootstrap fileinputboot元件