我正在尝试使用ASP.Net中的FileUpload控件将文件上传到服务器。我希望能够上传超过1GB的文件,并且可能永远不会超过2GB。目前我有这个上传代码:
string filename = FileUpload1.PostedFile.FileName;
filename = filename.Remove(filename.Count() - 4) + "-" + DateTime.Now.ToShortDateString() + ".zip";
filename = filename.Replace(" ", "-");
filename = filename.Replace("/", "-");
//attempt to save the file
FileUpload1.SaveAs("C:\\Uploads\\" + filename);
我得到的错误是服务器在尝试上传文件很长时间后超时。我已经阅读了很多,并发现了许多建议,我的web.config现在看起来像这样:
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" maxRequestLength="999999999" executionTimeout="100000000" />
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="4000000000"/>
</requestFiltering>
</security>
</system.webServer>
我不想使用已经编写的工具,例如。 NeatUpload,因为我真的想让这个当前的代码工作。如果有人有任何建议,或想了解更多详情,请告诉我,谢谢。
答案 0 :(得分:1)
我理解你希望获得&#34;你的&#34;代码工作,但你真的在使用ASP.NET FileUpload控件来上传你所说的大小的文件。我相信,即使你开始工作,当有人开始上传1GB +大小的文件时,你也不会满意你的网站的内存使用情况或响应能力,更不用说多人了。
我认为你的更好的开发工作可能是一个自定义的HTTP处理程序,它可以对文件进行分块并上传更易于管理的部分,因为HTTP从未设计用于执行大规模文件传输,这是大多数(几乎全部)免费和开放的原因ASP.NET FileUpload的源代码替代方法是使用一个HTTP处理程序来整理文件或浏览器扩展(Flash,Silverlight等)来托管发送到服务器的块。
NeatUpload是CodePlex - NeatUpload
开源的