Brettle.Web.NeatUpload.dll大文件上传控件使用详解

 

NeatUpload是一个开源的大文件上传控件,非常的强大,支持文件类型过滤、上传进度条显示、多文件上传等强大的功能。最近在工作中使用Brettle.Web.NeatUpload.dll上传视频文件,在参考网上其他资料的基础上写了如下的使用记录:

1、    下载Brettle.Web.NeatUpload.dll,并在项目中添加引用;

2、    复制文件夹“NeatUpload”到项目根目录;

3、    在配置文件的<system.web>节点中添加如下配置:

<httpModules>

<!—使用NeatUpload控件及需要显示上传进度条-->

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

</httpModules>

4、    在上传文件的页面中引用该控件:

A、    页面代码:

           

添加上传控件:

 

B、    后台事件:

        /// <summary>

        /// 上传图片或者视频

        /// </summary>

        protected void UploadFile()

        {

            if (this.file_UpLoad.HasFile)

            {

   string fileType = Path.GetExtension(file_UpLoad.FileName.ToLower());   

                if (fileType != ".flv")

                {

                    this.errorMsg.Text = "必须上传.flv文件!!";

                    return;

                }

//上传文件的重命名

HiddenFile.Value = SetFileName(file_UpLoad.FileName);

//获取配置文件中限定的上传文件大小,这里设定显示2G,用户可以自定义

                long size = (long)(Convert.ToInt32(ConfigurationManager.AppSettings["bigfile"])) * 1024 * 1024 * 1024;

//获取上传文件的大小

                long longth2 = file_UpLoad.ContentLength;

                if (longth2 > size)

                {

                    this.errorMsg.Text = string.Format("单个文件不能超过{0}G!!", ConfigurationManager.AppSettings["bigfile"]);

                    return;

                }

                try

                {

//把文件上传到指定的目录下,第一参数表示文件报错的路径和文件名称,这里把文件保存在根目录下的UpLoads文件夹中

  file_UpLoad.MoveTo(Path.Combine(Request.PhysicalApplicationPath + "//UpLoads", HiddenFile.Value),

                                    Brettle.Web.NeatUpload.MoveToOptions.Overwrite);

                    this.errorMsg.Text = "上传成功!!";

                }

                catch (Exception ex)

                {

                    this.errorMsg.Text = "上传异常!!";

                    return;

                }

            }

        }

 

      

 

/// <summary>

        /// 重新命名文件名称

        /// </summary>

        protected string SetFileName(string filename)

        {

            int index = filename.IndexOf(".");

            string extension = filename.Substring(index);//扩展名

            string fName = Guid.NewGuid().ToString() + extension;            return fName;

        }

 

 

 

5、完成以上4个步骤后,上传大文件的功能是已经完全实现的了,但是如果项目中其他地方使用普通的FileUpload上传时会发生了一个错误(Nonfile portion > 4194304 bytes,文件大于默认值4M),这时全站都会默认使用此httpModule,当你使用FileUpload上传文件时,只要是超过4M(默认的)的都不能上传,就算在配置文件中修改了普通的FileUpload上传大小的限制值(默认值允许上传2M的文件)<!--asp.net,默认只允许上传2M文件,增加如下配置,一般可以自定义最大文件大小.最大163840K,即160M -->

 <httpRuntime executionTimeout="300" maxRequestLength="163840" useFullyQualifiedRedirectUrl="false " />都没用,还是会出现Nonfile portion > 4194304 bytes的错误的。

 

解决方法如下:

1)、首先在<configuration>节点中添加:

  <configSections>

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

    <sectionGroup name="system.web">

      <section name="neatUpload" type="Brettle.Web.NeatUpload.ConfigSectionHandler, Brettle.Web.NeatUpload" allowLocation="true" />

    </sectionGroup>

  </configSections>

2)、然后在 <system.web>节点中添加:

 

<neatUpload useHttpModule="false" maxNormalRequestLength="4096" maxRequestLength="2097151" defaultProvider="FilesystemUploadStorageProvider">

          <providers>

            <add name="FilesystemUploadStorageProvider" type="Brettle.Web.NeatUpload.FilesystemUploadStorageProvider, Brettle.Web.NeatUpload"/>

          </providers>

        </neatUpload> 

3)、最后在<configuration>节点中添加:

<!--上传文件的页面路径-->

<location path="VideoAdd.aspx" >

<system.web>

<!--为true则代表使用neatUpload的httpModule,false为不使用-->

 <neatUpload useHttpModule="true" />                               <httpRuntime maxRequestLength="2097151" executionTimeout="3600" useFullyQualifiedRedirectUrl="true" /> 

<!--允许最大为40M-->

</system.web>

</location>

posted @ 2013-05-22 14:18  LannyLiu  阅读(773)  评论(0编辑  收藏  举报