今天遇到一個問題,就是“NeatUpload大文件上傳控件而導致Nonfile portion > 4194304 bytes錯誤”,百度后發現了一個解決方法,跟大家分享下:
NeatUpload是一個開源的大文件上傳控件,非常的強大,支持文件類型過濾、上傳進度條顯示、多文件上傳等強大的功能。
但部署至項目后,有些地方用普通的FileUpload上傳時卻發生了一個錯誤(Nonfile portion > 4194304 bytes,文件大于默認值4M),因如果用NeatUpload控件及需要顯示上傳進度條的話,得在web.config中加入如下代碼:
<httpModules> <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule, Brettle.Web.NeatUpload"/>
</httpModules>
這時全站都會默認使用此httpModule,當你使用FileUpload上傳文件時,只要是超過4M(默認的)的都不能上傳,就算你配置了<httPRuntime maxRequestLength="400000" executionTimeout="3600"/>都沒用,還是會出現Nonfile portion > 4194304 bytes的錯誤的。
解決方法如下:
1、在<configuration>里面加入以下代碼:
<configSections> <sectionGroup name="system.web"> <section name="neatUpload" type="Brettle.Web.NeatUpload.ConfigSectionHandler, Brettle.Web.NeatUpload" allowLocation="true" /> </sectionGroup> </configSections>
2、在<system.web>節中插入以下代碼(此方式是全局性的,第3種為針對某頁面):
<neatUpload useHttpModule="true" maxNormalRequestLength="40960" maxRequestLength="2097151" defaultProvider="FilesystemUploadStorageProvider"> <providers> <add name="FilesystemUploadStorageProvider" type="Brettle.Web.NeatUpload.FilesystemUploadStorageProvider, Brettle.Web.NeatUpload"/> </providers> </neatUpload>
此方法是修改屬性maxNormalRequestLength的值為40960(40M),如果將useHttpModule改為false則無所謂。
3、在<configuration>里面的后面位置加入以下代碼(此方式是針對某一頁面):
<location path="UploadFile.aspx" ><!--上傳文件的頁面路徑--> <system.web> <neatUpload useHttpModule="true" /> <!--為true則代表使用neatUpload的httpModule,false為不使用--> <httpRuntime maxRequestLength="40960" executionTimeout="3600" useFullyQualifiedRedirectUrl="true" /> <!--允許最大為40M--> </system.web> </location>
neatUpload節點的相關屬性介紹如下:
<neatUpload useHttpModule="true or false, defaults to true" maxNormalRequestLength="up to 2097151 in KBytes, defaults to 4096" maxRequestLength="up to 2097151 in KBytes, defaults to 2097151" maxUploadRate="rate in KBytes/sec, defaults to -1 which means unlimited" postBackIDQueryParam="parameter name, defaults to NeatUpload_PostBackID" multiRequestUploadHandlerUrl="URL that handles the requests in a multi-request upload,defaults to ~/NeatUpload/MultiRequestUploadHandler.ashx" debugDirectory="directory to which debug info should be written, defaults to none" decryption="name of the SymmetricAlgorithm to use to encrypt/decrypt protected data, defaults to .NET default algorithm used by SymmetricAlgorithm.Create()" validation="name of the HashAlgorithm to use to validate protected data, defaults to .NET d
新聞熱點
疑難解答