对于C#中的FileUpload解决文件上传大小限制的问题设置

您可能没意识到,但对于可以使用该技术上载的文件的大小存在限制。默认情况下,使用 FileUpload 控件上载到服务器的文件最大为 4MB 左右。不能上载超过该限制的任何内容。

然 而,关于 .NET 的重要一点是,它通常会提供一种规避限制的方法。您通常可以更改正在使用的默认设置。要更改大小限制,可以在 web.config.comments 文件(可以在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG 的 ASP.NET 2.0 配置文件夹中找到)或应用程序的 web.config 文件中进行一些改动。

在 web.config.comments 文件中,查找一个名为 <executionTimeout>的节点,如下所示:

<httpRuntime executionTimeout="110" maxRequestLength="4096" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="5000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveASPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false" />

在这个节点上进行了许多操作,但负责上载文件大小的设置是 maxRequestLength 属性。默认情况下,该属性设置为 4096 千字节 (KB)。只需更改此值,就可以增加可上载到服务器的文件大小。如果想要允许将 10 兆字节 (MB) 的文件上载到服务器,则将 maxRequestLength 值设置为 11264,这意味着该应用程序允许将最大为 11000 KB 的文件上载到服务器。

在 web.config.comments 文件中进行此改动会将该设置应用于服务器上的所有应用程序。如果要将该设置仅应用于正在使用的应用程序,则将该节点应用于应用程序的 web.config 文件,覆盖 web.config.comments 文件中的所有设置。请确保该节点位于配置文件中的 <system.web> 节点之间。

与上载文件大小限制有关的另一个设置是赋给 <httpRuntime> 节点中 executionTimeout 属性的值。

赋给 executionTimeout 属性的值是 ASP.NET 关闭前允许发生的上载秒数。如果要允许将更大的文件上载到服务器,则还要增加该值和 maxRequestLength 值。

增加可上载文件大小的一个缺点是,存在通过发出大量请求来攻击服务器的黑客。要避免这种情况,可以减小允许上载的文件大小;否则,可能会发现数百个甚至上千个 10 MB 的请求访问您的服务器。

客户端验证允许上载的文件类型

有几种方法可以用来控制上载到服务器的文件类型。遗憾的是,没有一种十全十美的方法可以防御其他人上载恶意的文件。然而,您可以采取一些步骤,以使这个允许最终用户上载文件的过程更易于管理。

一个可用的好方法是使用 ASP.NET 免费提供的 ASP.NET 验证控件。这些控件使您可以对正在上载的文件进行正则表达式检查,看看文件的扩展名是否在允许上载的扩展名之列。

因为该方法强制在客户端进行检查,所以对于允许在客户端使用验证控件的浏览器而言,这是一个理想的选择;如果签名不是您允许的签名,则该文件不能上载到服务器。清单 3 显示一个使用验证控件完成该任务的示例。

此处不介绍验证控件的用法。有关验证控件的完整解释以及如何在 ASP.NET 页中使用它们,请参阅 Validating ASP.NET Server Controls

清单 3. 使用验证控件限制上载到服务器的文件类型

<ASP:FileUpload ID="FileUpload1" runat="server" /><br /><br /><ASP:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Upload File" /> <br /><br /><ASP:Label ID="Label1" runat="server"></ASP:Label><ASP:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="Only mp3, m3u or mpeg files are allowed!" ValidationExpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))     +(.mp3|.MP3|.mpeg|.MPEG|.m3u|.M3U)$" ControlToValidate="FileUpload1"></ASP:RegularExpressionValidator><br /><ASP:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="This is a required field!" ControlToValidate="FileUpload1"></ASP:RequiredFieldValidator>

这个简单的 ASP.NET 页使用验证控件,这样最终用户就只能将 .mp3、.mpeg 或 .m3u 文件上载到服务器。如果文件类型不是以上可选的文件类型,则 Validation 控件向屏幕抛出一个异常。如图 4 所示。

zt对于C#中的FileUpload解决文件上传大小限制的问题设置的更多相关文章

  1. springboot解决文件上传大小限制

    (1)在配置文件(application.properties)加入如下代码 springboot2.0以下配置为: spring.http.multipart.maxFileSize = 10Mb ...

  2. 使用fileupload实现文件上传

    一. fileupload组件工作原理 先来张图片, 帮助大家理解 fileupload核心API 1. DiskFileItemFactory构造器1) DiskFileItemFactory() ...

  3. ASP.NET中的文件上传大小限制的问题

    一.文件大小限制的问题 首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文 ...

  4. IIS 7 中设置文件上传大小的方法

    在IIS 6.0中设置文件上传大小的方法,就是配置如下节点: <system.web> <httpRuntime maxRequestLength="1918200&quo ...

  5. 分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载

    摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢) <!--设置文件上传需要的jar--> <dependency> <grou ...

  6. IIS 6和IIS 7 中设置文件上传大小限制设置方法,两者是不一样的

    在IIS 6.0中设置文件上传大小的方法,只要设置httpRuntime就可以了 <system.web> <httpRuntime executionTimeout="3 ...

  7. struts2文件上传大小限制问题小结

    一:首先看一下程序执行中出现的对应报错信息,如下所示: [WARN ] 2015-03-03 15:31:11 :Unable to parse request org.apache.commons. ...

  8. struts2文件上传大小限制问题小结(引用)

    最后解决办法: 页面js控制上传文件的大小,在页面进行控制.如下代码 inputs是所有文本上传input DOM //名称信息 var nameStr=''; //大小信息 var sizeStr= ...

  9. springMVC文件上传大小超过限制的问题

    [转自]https://my.oschina.net/ironwill/blog/646762 springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便. 我们通过下面的配置来 ...

随机推荐

  1. 阿里云ECS 环境是CentOS 7.3安装mongodb3

    CentOS安装mongodb https://www.cnblogs.com/zddzz/p/10069912.html CentOS安装mongodb 我的是阿里云ECS 环境是CentOS 7. ...

  2. cv.Mat 与 .txt 文件数据的读写操作

    1.按OpenCV格式实现的 .txt 文件读写 可以用 cvSave 和 cvLoad 实现,格式和 .xml/.yml 的差不多,不过如果专用与 OpenCV 的数据读写,还是用  .xml/.y ...

  3. Google Chrome 总提示flash插件过期,用命令行模式解决

    目标那改成:"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --args --allow-outdate ...

  4. hadoop之 distcp(分布式拷贝)

    概述 distcp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具. 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成. 它把文件和目录的列表作为map任务的输入,每个任务会 ...

  5. php mysql apache字符集(二) (转)

    1 MYSQL中的字符集概念  Mysql的字符集里有两个概念,一个是"Character set(字符集)",另一个是"Collations".1.1 Col ...

  6. bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1069 发现 n 可以 n^2 .所以枚举对角线,分开的两部分三角形就可以旋转卡壳了. 注意坐 ...

  7. 老齐python-基础5(运算符、语句)

    1.运算符 1.1算术运算符 1.2比较运算符 >>> a = 10 >>> b = 20 >>> a > b False >> ...

  8. Unit05: WEB项目的开发模式 、转发 和 Unit09: EL、JSTL

    Unit05: WEB项目的开发模式 .转发   和  Unit09: EL.JSTL dao package dao; import java.io.Serializable; import jav ...

  9. 浅谈浅克隆(shallow clone)和 深克隆(deep clone)

    区别就在于是否对对象中的引用变量所指向的对象进行拷贝. 1.浅克隆/浅复制/浅拷贝 浅拷贝是指在拷贝对象时,对于基本数据类型的变量会重新复制一份,而对于引用类型的变量只是对引用进行拷贝,没有对引用指向 ...

  10. java web 程序---猜数字游戏

    思路:1.第一个是随机产生的数字,告诉我们去猜  cai.jsp 2.第二个是一个form表单,提交按钮后,将连接到验证页面 test1.jsp 3.第三个是比较猜的数和随机数.对了,提示再玩一次,不 ...