关于FileUpload控件上传文件大小限制问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于FileUpload控件上传文件大小限制问题相关的知识,希望对你有一定的参考价值。

我在页面中放了一个FileUpload控件
我想上传比较大(10多MB)的文件,可惜系统默认限制了文件最大为4096KB(4MB)
于是我在C:\windows\.....\web.config.comments文件中,<httpRuntime>这个节点下的maxRequestLength设置为20480(20MB)
可是还是老样子,几MB的就还行,10几MB的就上传不了
咋回事呢?各位教教我,谢谢

默认上传文件大小4096KB,如果要上传超过此大小的文件,会出现错误界面。可以对web.config文件做一下配置,就可以解决,解决方法如下:

1、首先创建一个名称为  file_value  的html文件。

2、添加一个input元素 设置input类型为file设置id为my_file_id_value。

3、添加一个button按钮,在点击事件中加入自定义函数my_file_value,添加一p标签,设置id 为 show_file_value。

4、在javascript中创建一个自定义函数   my_file_value。

5、在自定义函数中获取input file对象。用value属性获取fileupload对象上传的文件完全路径,将获取的结果添加到p标签中显示。

6、最后在浏览器中打开文件,点击button查看上传的文件的路径效果。

参考技术A

  系统默认上传文件大小4096KB,如果要上传超过此大小的文件,会出现错误界面等

  其实,只要对web.config文件做一下配置,就可以解决 

  在配置文件中添加如下代码:

<configuration>  <system.web>
  <httpRuntime maxRequestLength="4096" executionTimeout="120"/>
  </system.web>
  </configuration>

  说明:

  maxRequestLength属性限制文件上传的大小,是以KB为单位的,默认值为4096KB,而最大上限为2097151KB,大约是2GB。

  executionTimeout属性限制文件上传的时间,以秒(s)为单位,默认值为90 s,如果您考虑到所设计的Web应用系统上传时间要超过90 s可延长设定值。

参考技术B 这个就是.NET的原因没什么办法的,通过设置配置文件不能从根本上解决上传大文件的问题。
现在一般的解决方案
1,使用第三方的组件
一般要花钱的而且性能方面还有待于测试。
要吗就是自己写分块读取,网上有相关的文章
参考技术C 在web.config的system.web节中添加:

<httpRuntime maxRequestLength="512000" executionTimeout="120" />

maxRequestLength指示 ASP.NET 支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。

executionTimeout 指示允许执行请求的最大时间,以秒为单位,默认90秒。
看下这样行不本回答被提问者采纳
参考技术D 可以设置断点跟踪查看下发生了什么事情,要是传的东西非常大建议使用文件操作!

FileUpload控件文件上传扩容限制文件类型及上传验证

1、将选中文件上传到目标位置:

    <span style="white-space:pre">    </span>//获取上传文件的文件名称  
            string name = FileUpload1.FileName;  
            //将文件名称拼接成为想要的相对路径  
            string path = "images/" + DateTime.Now.ToString("yyyyMMddhhmmss") + name;  
            //执行另存为方法,但是这里需要绝对路径,那么使用路径映射  
            FileUpload1.SaveAs(Server.MapPath(path));  

2、上传文件默认大小限制为4MB,可以扩容,方式为:

    <span style="white-space:pre">    </span>//在Web.config配置文件中的system.web标记中增加以下代码,最大长度默认为4096,单位为KB,下面为扩容10倍  

     <span style="white-space:pre">   </span><system.web>  
     <span style="white-space:pre">   </span>  <httpRuntime maxRequestLength="40960"/>  
    <span style="white-space:pre">    </span></system.web>  

3、限制浏览文件的类型:

    <span style="white-space:pre">    </span><!--限制浏览文件的类型,添加accept属性-->  
            <asp:FileUpload ID="FileUpload1" runat="server" accept=".png,.jpg,.jpeg" />  

4、上传验证:

分为两种方式,服务端验证会刷新页面,客户端使用js验证则不会刷新页面,推荐使用js验证。

服务端:

    <span style="white-space:pre">    </span>//使用以下方式可以获取上传文件的长度,单位为B  
            if (FileUpload1.PostedFile.ContentLength > (4 * 1024 * 1024))  
            {  
                Label1.Text = "文件超过4M!";  
                return;  
            }  

客户端:

    <script type="text/javascript">  
            window.onload = function () {  
                //上传按钮点击事件  
                document.getElementById(btn1).onclick = function () {  
                    //取到file元素  
                    var fl1 = document.getElementById(file1);  
                    //判断是否有选中文件  
                    if (fl1.value.length <= 0)  
                    {  
                        alert(请选择要上传的文件!);  
                        return false;  
                    }  
                    //获取文件长度并进行判断  
                    if (fl1.files[0].size > (4 * 1024 * 1024)) {  
                        alert(文件超过4M!);  
                        return false;  
                    }  
    <span style="white-space:pre">        </span>//验证结尾扩展名是否正确  
                    if (fl1.value.substr(fl1.value.length-4)!=.jpg || fl1.value.substr(fl1.value.length-5)!=.jpeg || fl1.value.substr(fl1.value.length-4)!=.png)  
                    {  
                        alert(选择的不是图片文件!);  
                        return false;  
                    }  
                };  
            };  
        </script>  

 

以上是关于关于FileUpload控件上传文件大小限制问题的主要内容,如果未能解决你的问题,请参考以下文章

FileUpload控件文件上传扩容限制文件类型及上传验证

如何在 FileUpload 控件中限制文件类型

用fileupload控件上传文件怎样使上传的文件显示在指定的位置

如何限制用户通过 jquery 在 Telerik 上传中上传零大小的文件?

使用apache的fileupload组件上传文件怎么解决编码问题?

js ajaxfileupload.js IE8 上传文件 拒绝访问