我有一个ASP.NET Web应用程序,我希望我的用户能够上传大文件。但是,有些文件非常大,占用的内存太多。
原则上应该可以接收请求流并将其直接写入FileWriter流,从而无需首先将整个文件加载到内存中。
我尝试访问Request.InputStream
并将其直接写入文件。它可以工作,但使用较大文件的测试表明Request.InputStream
仅在整个请求已加载到内存后才可用。
有人可以告诉我一种方法,我可以用它来接收ASP.NET中的普通Request.InputStream
并直接将其写入文件而不先将其加载到内存中吗?
注意,通过发布带有文件字段的表单,在浏览器中通过正常请求发送文件。 (我实际使用BlueImp JQuery File Upload,但我不认为这与这个问题有关)
答案 0 :(得分:0)
该过程称为字节服务。
<强> Byte Serving 强> 字节服务是仅将一部分HTTP / 1.1消息从服务器发送到客户端的过程。当HTTP服务器使用Accept-Ranges响应头广告其为部分请求提供服务的意愿时,字节服务开始。然后,客户端使用Range请求标头从服务器请求文件的特定部分。
似乎IIS和ASP.NET能够处理Accept-Range标头。 Microsoft git存储库中有Range Controller。
这是一个article,可能有助于配置IIS来处理这些请求。