關於.NET C#上傳大文件的解決辦法


1.最近在解決問題的時候遇到如何將視頻以及語音和圖片上傳到阿里雲的服務器中。但是遇到一些大文件就導致無法進行上傳.

2.在將圖片進行上傳到阿里雲的時候先將文件轉化為二進制文件,然后通過文件流 的形式進行上傳到阿里雲中。

3.但是通過傳統的<input type="file"> 只能上傳 4M 以內的文件。那么如何上傳比較大的文件了。其實方式非常的簡單。

在Web.config 修改一些配置參數以及配置項就可以了。

配置參數修改如下所示:

<system.web>

<compilation debug="true" targetFramework="4.5.2" />
<!--<httpRuntime targetFramework="4.5.2" />-->
<httpRuntime targetFramework="4.5.2" executionTimeout="90" maxRequestLength="2097151" useFullyQualifiedRedirectUrl="false"
minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>//最大為2G
</system.web>

這個也是網上中比較多的解決辦法,這里修改最大上傳的長度為2097151kb也就是2G,可以根據自己的需要修改這個大小。而executionTimeout屬性是用於限制文件上傳服務器的響應時間,也就是說如果網速很慢,上傳同樣大小的文件可能需要給予更長的響應時間,否則雖然沒有達到上傳大小限制但因為上傳超時而被ISS拒絕。

 但是以上方法仍然不夠,我們還需要添加一個很關鍵的東西來修改IIS中的屬性我們需要在配置文件中添加一些節點的配置。

<system.webServer> 

<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2072576000"/> //最大為2G
</requestFiltering>
</security>
</system.webServer>
這樣就可以了。其中關於  具體的屬性的意義參照一下:配置httpRuntime也可以讓FileUpload上傳更大的文件,不過設置太大了會因用戶將大量文件傳遞到該服務器而導致的拒絕服務攻擊(屬性有說明)

<httpRuntime>

<httpRuntime useFullyQualifiedRedirectUrl="true|false"

             maxRequestLength="size in kbytes"

             executionTimeout="seconds"

             minFreeThreads="number of threads"

             minFreeLocalRequestFreeThreads="number of threads"

             appRequestQueueLimit="number of requests"

             versionHeader="version string"/>

屬性 

屬性

 

選項

 

說明

 

appRequestQueueLimit

 

   

 

ASP.NET 將為應用程序排隊的請求的最大數目。當沒有足夠的自由線程來處理請求時,將對請求進行排隊。當隊列超出了該設置中指定的限制時,將通過“503 - 服務器太忙”錯誤信息拒絕傳入的請求。

 

executionTimeout

 

   

 

指示在被 ASP.Net 自動關閉前,允許執行請求的最大秒數。

 

enable

 

 

 

指定是否在當前的節點及子節點級別啟用應用程序域。默認值為 true。

 

   

 

true

 

指定啟用應用程序域。

 

   

 

false

 

指定禁用應用程序域。應用程序將不會在內存中加載,任何客戶端請求將導致出現錯誤號為 404 的錯誤。

 

idleTimeOut

 

   

 

指定應用程序域在經過多長的空閑時間后將予以關閉。默認值為 20 分鍾。

 

enableKernelModeCache

 

 

 

指定是否啟用輸出緩存。目前,該屬性只有在安裝 IIS 6.0 版或更高版本之后才起相應的作用。輸出緩存的配置和請求的類型決定了是否對內容進行緩存。

 

若要對響應進行緩存,必須滿足以下條件:

  • 必須通過頁面指令或使用緩存 API 顯式啟用緩存。
  • 緩存必須具有過期策略,以便內核知道何時放棄緩存。
  • 緩存不能有任何變量標頭或參數。
  • 請求不能要求進行任何身份驗證。
 

 

true

 

指定啟用緩存。

 

 

 

false

 

指定禁用緩存。

 

maxRequestLength

 

   

 

指示 ASP.NET 支持的最大文件上載大小。該限制可用於防止因用戶將大量文件傳遞到該服務器而導致的拒絕服務攻擊。指定的大小以 KB 為單位。默認值為 4096 KB (4 MB)。

 

minFreeLocalRequestFreeThreads

 

   

 

ASP.NET 保持的允許執行新本地請求的自由線程的最小數目。該線程數目是為從本地主機傳入的請求而保留的,以防某些請求在其處理期間發出對本地主機的子請求。這避免了可能的因遞歸重新進入 Web 服務器而導致的死鎖。

 

minFreeThreads

 

   

 

允許執行新請求的自由線程的最小數目。ASP.NET 為要求附加線程來完成其處理的請求使這些線程保持自由狀態。

 

useFullyQualifiedRedirectUrl

 

   

 

指示客戶端重定向是否是完全限定的(采用 {HYPERLINK "http://server/path" } 格式,這是某些移動控件所必需的),或者指示是否代之以將相對重定向發送到客戶端。

 

   

 

true

 

指定客戶端重定向需要以完全限定的格式發送。這是通過自動將不是完全限定的格式的所有重定向轉換為完全限定的格式來實現的。

 

   

 

false

 

指定客戶端重定向不需要被自動轉換為完全限定格式。false 是默認選項。

 

versionHeader

 

   

 

指定 ASP.NET 隨每個響應所發送的版本頭的值。Microsoft Visual Studio .NET 使用該屬性來確定當前使用的 ASP.NET 版本。這對產品環境來說不是必需的,並且可以通過從 Web.config 或 Machine.config 移除該屬性,或將該屬性設置為空字符串 (versionHeader="") 來將其禁用。

 

 

 http://wow.techbrood.com/fiddle/30625(關於應用JS 中的Canvas進行圖片的壓縮並進行返回Base64位字符串的問題)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM