3

我正在为我们网站上的一个新应用程序实现 XmlHttpRequest 和 FormData,并且担心一些客户可能会尝试一次上传数十甚至数十万个文档。在我努力测试这些条件之前,我希望有人知道(1)一次可以上传的文件数量和/或(2)是否存在文件大小限制限制在任何已实现这些功能的现代浏览器中。

4

1 回答 1

3
  1. 文件大小的限制取决于浏览器应用程序用来存储内容长度属性的数据类型(通常是有符号或无符号整数,或大约 2GB/4GB)。您还可以通过检查内容长度并拒绝超过特定阈值的上传来在服务器端代码中施加最大文件大小限制。

  2. 一次可以上传的文件数量取决于每个域允许的最大连接数。有关更多信息,请参阅此问题。因此,将一次上传 n 个文件。

更新

我做了一些测试,因为我不确定浏览器是否将文件系统中的文件直接流式传输到 TCP 连接或将它们缓冲在内存中。

如果我尝试通过 Fiddler 从 Chrome 和 FF 上传非常大的文件,我机器上浏览器进程的内存使用量不会增加,而 fiddler 进程在崩溃之前增加到 2GB(它是一个 32 位应用程序)。

因此,如果在服务器上将文件内容直接流式传输到数据存储中,我认为您不会在客户端或服务器上遇到内存问题。

请记住,大多数 Web 服务器都需要配置为接受非常大的请求。

此外,请确保每个文件使用一个 XmlHttpRequest 实例。如果您通过单个连接上传所有内容,则内容长度将设置为所有文件的总大小。

另外,请记住,允许上传大文件会使您的服务器容易受到 DoS 攻击(您可能已经知道这一点,但我认为值得一提)。

于 2012-05-23T17:28:18.130 回答