IIS中的HTTP文件上传是如何在内部工作的?

8

我希望了解在进行网络上传时发生了什么。

我猜其中一个:

  1. 文件由浏览器加载到内存中,发送到Web服务器缓冲区内存,然后通知应用程序收集它。
  2. 浏览器正在读取文件并同时将其发送到Web服务器,Web服务器可以开始逐步保存字节。

我尝试上传非常大的文件,并在接收上传的方法的第一行上设置断点。我看到浏览器花费了很长时间来加载...但断点仍未被触发,过了一会儿断点才被触发。

我想了解这个问题,因为在最坏的情况下,如果我允许上传大文件,它们可能会在某些时候耗尽服务器内存。

如果我上传2GB的文件会发生什么?(假设Web服务器/应用程序接受该长度)它会占用2GB的服务器内存吗?

干杯。


2
如果在达到一定大小后,即使消费者被通知的时间不确定,它仍然不将其流式传输到临时文件中,那么我会感到非常惊讶。但是我没有相关的参考资料来证明这一点。 - Rup
对,这是很有道理的。也许我应该去IIS/Apache论坛问一下,因为这可能是一个非常具体的问题。 - vtortola
1
哦,这里有各种各样的东西 - 我相信会有人知道 :-) - Rup
1个回答

6
HttpPostedFile类的文档(它代表在ASP.NET中上传到服务器的文件)指定:

文件以MIME multipart/form-data格式上传。默认情况下,所有请求(包括表单字段和大于256 KB的上传文件)都会被缓存到磁盘上,而不是保存在服务器内存中。


谢谢。我甚至没有想到去那里看! :) - vtortola

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接