本人在做网站过程中用到 NeatUpload 这个开源的大文件上传控件
开发环境:visual studio 2010
测试服务器为:win7带的 IIS7.5
在visual studio上运行的时候没有什么问题,可以上传大文件,但是发布到IIS上,网络上传遇到了很多问题
例如“配置错误访问不了网站”,还有“上传时间长了之后会被终止线程”
最后通过修改配置解决了这一问题,NeatUpload用法网上有很多,也可以到官网看文献,这里就不再赘述。
进入正题:
web.config配置
1.在<configSections></configSections>节内加入:
<section name="neatUpload" allowLocation="true" type="Brettle.Web.NeatUpload.ConfigSectionHandler, Brettle.Web.NeatUpload"/>
2.在<configuration></configuration>也就是配置文件的任一地方加入,当然不要再其他例如<system.web>这样的节里(我是在</configSection>后面紧接加入的,相对于一级节点<configuration> <neatUpload>是2级节点):
<neatUpload useHttpModule="true" maxNormalRequestLength="2097151" maxRequestLength="2097151" defaultProvider="FilesystemUploadStorageProvider">
<providers>
<add name="FilesystemUploadStorageProvider" type="Brettle.Web.NeatUpload.FilesystemUploadStorageProvider, Brettle.Web.NeatUpload"/>
</providers>
</neatUpload>
3.在<system.web></system.web>节内加入:
<httpRuntime maxRequestLength="2097151" executionTimeout="3600" useFullyQualifiedRedirectUrl="true" />
其中executiontimeout是用来控制http请求时间的,如过不设置默认是90秒,大文件上传过程会被终止
4.加入<system.webServer></system.webServer>节
<system.webServer>
<modules>
<!--上传大文档-->
<add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload" preCondition="managedHandler"/>
</modules>
<security>
<requestFiltering>
<!-- Increased maxAllowedContentLength from default of 300MB. -->
<requestLimits maxAllowedContentLength="2147483648" ></requestLimits>
</requestFiltering>
</security>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
其中,如果不配置<security></security>大文件上传 “进度条”出现但不会有进度,因为maxallooedcontentlenght因为考虑到安全因素被限制
以上就是所有的配置。关于网上还有是否显示进度条的配置我这里不存在这个问题,我的上传控件代码如下:
<Upload:InputFile ID="AttachFile" runat="server" Width="300px" />
<div id="ProgressBar" style="display: none; width:100%;">
<Upload:ProgressBar ID="pbProgressBar" runat='server' Inline="true" Width="500px" Triggers="Upload" Height="35px">
</Upload:ProgressBar>
</div>
<br />
上图: