关于.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 版或更高版本之后才起相应的作用。输出缓存的配置和请求的类型决定了是否对内容进行缓存。
 若要对响应进行缓存,必须满足以下条件: 
  | 
|
| 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位字符串的问题)
关于.NET C#上传大文件的解决办法的更多相关文章
- cgi+lighttpd上传大文件失败解决办法
		
问题: - 前端页面点击上传按钮,不超过30M的小文件顺利上传到板子指定位置,上传60Md的更新包,出错,http状态码413——请求实体过大 环境: - web服务器——lighttpd1.4.30 ...
 - 【转】Windows2008上传大文件的解决方法(iis7解决上传大容量文件)
		
2008上传大文件的解决方法:http://wenku.it168.com/d_000091739.shtml 2003上传大文件的解决方法:http://tech.v01.cn/windowsxit ...
 - .net core IIS/Kestrel上传大文件的解决方法
		
大文件,就是内容的大小超过了一定数量的文件,比如1个GB的文件. 站点一般会限制上传文件的大小,如果超过了一定限制,则会报错误. 在处理大文件上传的方式上,IIS代理和Kestrel宿主服务器的处理方 ...
 - php无法上传大文件完美解决方案
		
php.ini无法上传大文件完美解决办法 1.打开php.ini(打开方式就不用说了,百度一大堆) 2.查找post_max_size 表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表 ...
 - [Asp.net]Uploadify上传大文件,Http error 404 解决方案
		
引言 之前使用Uploadify做了一个上传图片并预览的功能,今天在项目中,要使用该插件上传大文件.之前弄过上传图片的demo,就使用该demo进行测试.可以查看我的这篇文章:[Asp.net]Upl ...
 - php 上传大文件配置upload_max_filesize和post_max_size选项
		
php 上传大文件配置upload_max_filesize和post_max_size选项 (2014-04-29 14:42:11) 转载▼ 标签: php.ini upload _files[f ...
 - PHP上传大文件 分割文件上传
		
最近遇到这么个情况,需要将一些大的文件上传到服务器,我现在拥有的权限是只能在一个网页版的文件管理系统来进行操作,可以解压,可以压缩,当然也可以用它来在线编辑.php文件. 文件有40M左右,但是服务器 ...
 - ASP.NET上传大文件的问题
		
原文:http://www.cnblogs.com/wolf-sun/p/3657241.html?utm_source=tuicool&utm_medium=referral 引言 之前使用 ...
 - php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项
		
php 上传大文件主要涉及配置 upload_max_filesize 和post_max_size两个选项 今天在做上传的时候出现一个非常怪的问题,有时候表单提交可以获取到值,有时候就获取不到了 ...
 
随机推荐
- 算法-java代码实现希尔排序
			
希尔排序 第8节 希尔排序练习题 对于一个int数组,请编写一个希尔排序算法,对数组元素排序. 给定一个int数组A及数组的大小n,请返回排序后的数组.保证元素小于等于2000. 测试样例: [1,2 ...
 - angularjs+ionic+'h5+'实现二维码扫描功能
			
今天给大家分享一下基于angularjs与ionic框架实现手机二维码扫描的功能.没有用到cordova等任何插件,h5+实现的. 开发工具:hbuilder 首先,需要在hbuilder项目下面的配 ...
 - 调用QQ聊天功能
			
[HTML]: <a href="javascript:void(0);" onclick="chatQQ()">咨询客服</a> fu ...
 - 邓_ ThinkPhp框架
			
登陆功能是PHP程序设计中常见的功能.本文ThinkPHP实例主要完成注册成功后进入首页,并告诉你是登录用户的功能.具体实现步骤如下: 第一步:在config.php文件中加上: 1 'USER_AU ...
 - Android之MaterialDesign应用技术
			
PS:纵观现在大大小小软件的界面都变的比较漂亮,还有一些系统了,比如小米的MIUI,华为的EMUI等,虽然底层都是安卓,但他们的界面多多少少都会不同,谷歌对这个UI也是非常重视的,MaterialDe ...
 - Django中的F和Q函数
			
内容简介: 介绍Django中的F和Q作用以及使用方法 一.F介绍 作用:操作数据表中的某列值,F()允许Django在未实际链接数据的情况下具有对数据库字段的值的引用,不用获取对象放在内存中再对字段 ...
 - maven项目生成war包
			
配置 你的pom.xml文件,在你的overview视窗里 配置 packaging为 war 然后添加 <plugin> <groupId>org.apache.maven. ...
 - 解决前端页面a标签嵌套a标签bug
			
在前端页面中,一般二级导航栏会出现a嵌套a标签出现重复的父元素a标签bug 比如: <nav class="nav"> <ul> <li> &l ...
 - MySQL 水平拆分(读书笔记整理)
			
转:http://blog.csdn.net/mchdba/article/details/46278687 1,水平拆分的介绍 一般来说,简单的水平切分主要是将某个访问极其平凡的表再按照某个字段的某 ...
 - 两个arduino的通信
			
两个arduino板进行串口通讯实验 (-- ::)转载▼ 标签: 杂谈 购得两块arduino板子,想试试其通讯能力,于是写下如是程序,居然没有打麻烦,奇怪! 接线:两个板子各用电池供电,将两块板子 ...