• 使用NeatUpload控件实现ASP.NET大文件上传


    一般10M以下的文件上传通过设置Web.Config,再用VS自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不能这样上传了。NeatUpload是一款为数不多的开源、免费的文件上传控件,不仅支持大文件上传,而且还显示上传进度。下面我们来介绍一下NeatUpload控件的使用方法。

    一、下载并解压在任意位置

    https://dwz.cn/fgXtRtnu,可以下载到最新的,解压后可以得到如下文件:

    二、安装配置NeatUpload控件(.Net Framework2.0环境)

    1. 将上述bin/中Brettle.Web.NeatUpload.dll添加到%windir%assembly中:

    2. 将上述bin/中Brettle.Web.NeatUpload.dll添加到项目或网站的引用中,观察Web.config文件会发现自动增加了如下配置:

    <compilation debug="false">
    2       <assemblies>
    3         <add assembly="Brettle.Web.NeatUpload, Version=1.3.4034.20191, Culture=neutral, PublicKeyToken=DD134EA1C3727369"/>
    4       </assemblies>
    5     </compilation>

    3. 在工具箱上添加项,可以得到7个工具:

    我们主要使用InputFile和ProgressBar这两个控件。

    4. 在Web.config的system.web节加入如下配置,

     
     <httpModules>
    2       <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" />
    3     </httpModules>

    至此,NeatUpload的安装和配置工作完成。

    三、使用NeatUpload控件

    1. 前台代码

    <body>
        <form id="form1" runat="server">
        <div>
            <Upload:InputFile ID="AttachFile" runat="server"/>
            <Upload:ProgressBar ID="ProgressBar1" runat='server'>
            </Upload:ProgressBar>
        </div>
            <div>
                <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click" />
            </div>
        </form>
    </body>

    2. 后台代码:

      

    protected void btnSave_Click(object sender, EventArgs e)

        {

            if (AttachFile.HasFile)

            {

                string FileName = this.AttachFile.FileName;//获取上传文件的文件名,包括后缀

                string ExtenName = System.IO.Path.GetExtension(FileName);//获取扩展名

                string SaveFileName = System.IO.Path.Combine(

                        System.Web.HttpContext.Current.Request.MapPath("UpLoads/"),

                        DateTime.Now.ToString("yyyyMMddhhmm") + ExtenName);//合并两个路径为上传到服务器上的全路径

                AttachFile.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);

                string url = "UpLoads/" + DateTime.Now.ToString("yyyyMMddhhmmss") + ExtenName;  //文件保存的路径

                float FileSize = (float)System.Math.Round((float)AttachFile.ContentLength / 1024000, 1); //获取文件大小并保留小数点后一位,单位是M

            }

        }

    3. 最终效果:

    文件上传后目录:


    实例使用环境

    1. 使用环境VS2012+.Net Framework2.0,如果是在.Net Framework 3.5及其以上版本使用安装和配置会更简单。

    五、 常见问题

    1.

    解决方法是在system.webServer节中加入以下内容,让服务器允许的最大请求量增加,如下设置的是1G:

    1 
     <security>
    2       <requestFiltering>        
    3         <requestLimits maxAllowedContentLength="1073741824"/>
    4       </requestFiltering>
    5     </security>

    2.

    解决方法是将system.web节的“UploadHttpModules"配置调整到system.webServer节中,以适应在托管管道模式下运行应用程序:

    1 
     <modules>
    2       <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" />
    3     </modules>

     DEMO下载地址:https://dwz.cn/fgXtRtnu

  • 相关阅读:
    Java高级工程师面试题总结及参考答案
    Java面试通关要点汇总整理【终极版】
    40道Java基础常见面试题及详细答案
    Java方向如何准备BAT技术面试答案(汇总版)
    10-01 Java 类,抽象类,接口的综合小练习--运动员和教练
    div在页面垂直居中方法---增强改进版
    TortoiseSVN切换更改登录账号密码
    09-04 java 接口
    09-03 Java 抽象类
    09-02 java 多态
  • 原文地址:https://www.cnblogs.com/xproer/p/10749918.html
Copyright © 2020-2023  润新知