关于.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两个选项 今天在做上传的时候出现一个非常怪的问题,有时候表单提交可以获取到值,有时候就获取不到了 ...
随机推荐
- Proxy 那点事儿
---恢复内容开始--- 尊重原创:https://my.oschina.net/huangyong/blog/159788 Proxy,也就是"代理"了.意思就是,你不用去做,别 ...
- TI-RTOS 控制LED灯
TI将FreeRtos放在自家芯片上,于是得到了TI-RTOS,两者的区别我还不太清楚,近日因为项目需要,开始试用TI-RTOS,先来一个点灯的实验吧,算是 hello world. 这次手上的板子是 ...
- visual studio添加lib库
方法1: 通过设置工程配置来添加lib库. A.添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录. B.添加文件引用的lib静态库路径 ...
- POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你 ...
- css3中的关键帧技术分析应用
最近在研究网页加载进度效果的时候发现可以使用css3实现这个效果. 使用css3实现完全不需要图片,相比使用loading.gif的实现来说可能更快. 使用css3实现动态加载的效果,主要会涉及到几个 ...
- Java学习笔记22---内部类之成员内部类的继承问题
成员内部类可以继承其他的类,也可以被其它类继承,本文主要说明其它类继承成员内部类的问题. 本文要点如下: 1).成员内部类的子类可以是内部类,也可以不是内部类: 2).当成员内部类的子类不是内部类或子 ...
- 机器学习——kNN(1)基本原理
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- Django之Model组件
Model组件在django基础篇就已经提到过了,本章介绍更多高级部分. 一.回顾 1.定义表(类) ##单表 from django.db import models class user(mode ...
- 使用Recovery Services备份Azure ARM模式虚拟机
1.需要事先准备好要备份的虚拟机,如"hlmcent73n" 2.创建一个恢复服务保管库 3.选择虚拟机类型的备份 4.可以选择默认备份策略,也可以选择新建备份策略,以下演示为新建 ...
- java中String的.trim()方法
该方法去除两边的空白符 原理: 看看源码实现 public String trim() { int len = value.length; ; char[] val = value; /* avoid ...