gpt4 book ai didi

javascript - JavaScript 最大 Blob 大小是否有任何限制

转载 作者:可可西里 更新时间:2023-11-01 01:20:49 31 4
gpt4 key购买 nike

我正在尝试使用 AJAX 调用下载文件。我需要使用 AJAX 调用,因为我必须发出一个发布请求,同时我需要从客户端发送一些 header 。由于服务器 API 不在我们的控制之下,因此除了使用 AJAX 之外我们别无选择。为了显示文件保存对话框,我将字节数组转换为 blob 到对象 URL,如下所示

var oReq = new XMLHttpRequest();
oReq.open("POST","api/operations/zip", true);
oReq.responseType = "arraybuffer";
oReq.onload = function(oEvent) {
var blob=new Blob([oReq.response], {type: 'application/octet-binary'});
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myFileName.zip"; link.click();
}
oReq.send(filePaths);

现在我想知道除了浏览器内存限制之外,JavaScript 中的 Blob 大小 是否有任何限制。如果我有大约 8 GB 的 RAM,是否可以下载 4 GB 的文件。

最佳答案

现有的答案基本上已经过时了。


Chrome ( 57+ it appears ):

根据 Chrome's Blob Storage System Design :

Blob Storage Limits

We calculate the storage limits here.

In-Memory Storage Limit

  • If the architecture is x64 and NOT ChromeOS or Android: 2GB
  • Otherwise: total_physical_memory / 5

Disk Storage Limit

  • If ChromeOS: disk_size / 2
  • If Android: disk_size / 20
  • Else: disk_size / 10

Note: ChromeOS's disk is part of the user partition, which is separate from the system partition.

Minimum Disk Availability

We limit our disk limit to accomidate a minimum disk availability. The equation we use is:

min_disk_availability = in_memory_limit * 2

Example Limits

(All sizes in GB)

Device          | Ram | In-Memory Limit | Disk | Disk Limit | Min Disk Availability
----------------+-----+-----------------+------+------------+----------------------
Cast | 0.5 | 0.1 | 0 | 0 | 0
Android Minimal | 0.5 | 0.1 | 8 | 0.4 | 0.2
Android Fat | 2 | 0.4 | 32 | 1.5 | 0.8
CrOS | 2 | 0.4 | 8 | 4 | 0.8
Desktop 32 | 3 | 0.6 | 500 | 50 | 1.2
Desktop 64 | 4 | 2 | 500 | 50 | 4

澄清一下,disk_size 显然是总磁盘大小,而不是可用磁盘空间(可能出于隐私原因,但请记住,您可能会用完可用磁盘空间)。

Chrome 使用 Chrome 配置文件目录中名为 blob_storage 的目录将 blob 部分存储到磁盘。

如果可用磁盘空间或可用 RAM 小于软件限制,我不确定是否或如何施加其他限制。当我知道更多时,我会更新这个答案。


歌剧(44 岁以上或更早):

与 Chrome 相同,因为它基于 Chromium。


Firefox(53+ 或更早版本):

没有明显的硬限制。我能够创建比 FileSaver.js 声称的“800 MiB”大得多的 Blob。它不使用磁盘空间来支持更大的 blob,所以它全部都在内存中,可能是操作系统将内存分页到磁盘。这意味着比内存更大的 blob 是可能的,但可能会降低性能。


Safari(10.1+ 或更早版本):

没有明显的硬限制。它不使用磁盘空间来支持更大的 blob,所以它全部都在内存中,可能是操作系统将内存分页到磁盘。这意味着比内存更大的 blob 是可能的,但可能会降低性能。


其他浏览器限制将在我了解后添加。

关于javascript - JavaScript 最大 Blob 大小是否有任何限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307789/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com