将文件直接保存到ASP.NET中的磁盘而不将其加载到内存中

时间:2014-09-12 11:31:25

标签: asp.net file-upload

我有一个ASP.NET Web应用程序,我希望我的用户能够上传大文件。但是,有些文件非常大,占用的内存太多。

原则上应该可以接收请求流并将其直接写入FileWriter流,从而无需首先将整个文件加载到内存中。

我尝试访问Request.InputStream并将其直接写入文件。它可以工作,但使用较大文件的测试表明Request.InputStream仅在整个请求已加载到内存后才可用。

有人可以告诉我一种方法,我可以用它来接收ASP.NET中的普通Request.InputStream并直接将其写入文件而不先将其加载到内存中吗?

注意,通过发布带有文件字段的表单,在浏览器中通过正常请求发送文件。 (我实际使用BlueImp JQuery File Upload,但我不认为这与这个问题有关)

1 个答案:

答案 0 :(得分:0)

该过程称为字节服务

  

<强> Byte Serving   字节服务是仅将一部分HTTP / 1.1消息从服务器发送到客户端的过程。当HTTP服务器使用Accept-Ranges响应头广告其为部分请求提供服务的意愿时,字节服务开始。然后,客户端使用Range请求标头从服务器请求文件的特定部分。

似乎IIS和ASP.NET能够处理Accept-Range标头。 Microsoft git存储库中有Range Controller

这是一个article,可能有助于配置IIS来处理这些请求。