1. 程式人生 > >關於.NET 上傳大文件的解決辦法

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

過期策略 link soft 防止 bytes stl 控件 拒絕 version

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="409600" useFullyQualifiedRedirectUrl="false"
minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100"/>
</system.web>

這樣就可以了。其中關於 具體的屬性的意義參照一下:配置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="") 來將其禁用。

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