Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用JavaScript保存需要客户端处理的大型文件_Javascript_Node.js_Html - Fatal编程技术网

如何用JavaScript保存需要客户端处理的大型文件

如何用JavaScript保存需要客户端处理的大型文件,javascript,node.js,html,Javascript,Node.js,Html,我正在制作一个简单的文件上传器,带有端到端加密。我已关闭上载/加密功能,但我不确定如何在不造成内存过载的情况下保存较大的文件。比如说,我有一个2gb的文件,我将把它解密成块,比如说,1kb。但一旦我拥有了所有这些块(作为缓冲区或blob),我如何将它们保存为流呢?我发现 但对于大文件,我认为这只会导致浏览器崩溃 编辑:我发现这表示BLOB的内存限制为500MB,这肯定太低了。这里有什么选项吗?您可以在一次调用新Blob([all,your,chunk])中连接所有的arrayBuffers或Bl

我正在制作一个简单的文件上传器,带有端到端加密。我已关闭上载/加密功能,但我不确定如何在不造成内存过载的情况下保存较大的文件。比如说,我有一个2gb的文件,我将把它解密成块,比如说,1kb。但一旦我拥有了所有这些块(作为缓冲区或blob),我如何将它们保存为流呢?我发现

但对于大文件,我认为这只会导致浏览器崩溃


编辑:我发现这表示BLOB的内存限制为500MB,这肯定太低了。这里有什么选项吗?

您可以在一次调用
新Blob([all,your,chunk])中连接所有的arrayBuffers或Blob

//一个简单的数组来存储所有的块
var chunks=[];
函数processChunks(){
//将所有块连接在一个blob中
var blob=新blob(块);
//对这最后一滴做点什么
var img=新图像();
img.src=URL.createObjectURL(blob);
文件.正文.附件(img);
}
var xhr=new XMLHttpRequest();
xhr.onload=函数(){
var b=此响应;
//在这里,我们切我们的斑点
对于(变量i=0;i
img{
宽度:100vw;
高度:100vh

}
不清楚“将文件上传到浏览器”是什么意思。通常浏览器从服务器下载文件或将文件上载到服务器。也不清楚你是从哪里得到大块的。我认为我们需要看到您在这个问题上的一些编码尝试,以便更好地了解您正在尝试做什么。仅供参考,根据此处的指南,您的问题不应依赖外部链接来理解。请在您的问题中添加足够的相关信息(最好是您尝试编写此代码),以便我们能够了解您到目前为止的情况。我用更多信息更新了它。但是,如果可以直接将Blob发送到节点库,那么只需使用
Blob.slice(start,length)
。要从blob切片重建,
新建blob([blobSlice1,blobSlicen])
我没有找到保存它的方法。因此,一旦创建了新blob,我将如何将其保存为具有正确名称/扩展名的文件?或者这只是包含在缓冲区中?
var json = JSON.stringify(data),
blob = new Blob([json], {type: "octet/stream"}),
url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);