0

我正在尝试使用 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,因为我真的很想让这个当前的代码工作。如果有人有任何建议,或者想了解更多细节,请告诉我,谢谢。

4

1 回答 1

1

我理解您希望让“您的”代码正常工作的愿望,但您确实在与使用 ASP.NET FileUpload 控件上传您所说的数量级的文件进行一场艰苦的战斗。我相信即使你得到这个工作,当有人开始上传 1GB+ 大小的文件时,你不会对你网站的内存使用或响应能力感到满意,更不用说多人了。

我认为您更好的开发努力可能是自定义 HTTP 处理程序,它可以将您的文件分块并上传到更易于管理的部分,因为 HTTP 从未设计用于进行大规模文件传输,这是大多数(几乎所有)免费和开源替代品的原因到 ASP.NET FileUpload 或者使用分块文件的 HTTP 处理程序或浏览器扩展(Flash、Silverlight 等)来托管要发送到服务器的块。

NeatUpload 在CodePlex开源- NeatUpload

于 2013-06-28T12:52:36.937 回答