关于.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位字符串的问题)

相关文章
相关标签/搜索