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

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

2.在將圖片進行上傳到阿里雲的時候先將文件轉化爲二進制文件,而後經過文件流 的形式進行上傳到阿里雲中。緩存

3.可是經過傳統的<input type="file"> 只能上傳 4M 之內的文件。那麼如何上傳比較大的文件了。其實方式很是的簡單。服務器

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

配置參數修改以下所示:阿里雲

<system.web>spa

<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>
.net

這個也是網上中比較多的解決辦法,這裏修改最大上傳的長度爲2097151kb也就是2G,能夠根據本身的須要修改這個大小。而executionTimeout屬性是用於限制文件上傳服務器的響應時間,也就是說若是網速很慢,上傳一樣大小的文件可能須要給予更長的響應時間,不然雖然沒有達到上傳大小限制但由於上傳超時而被ISS拒絕。線程

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

<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位字符串的問題)

相關文章
相關標籤/搜索