Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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文件api读取大的(>;300 MB)图像或视频文件,将其存储在本地,检索并显示?_Javascript_Blob_Indexeddb_Fileapi_Offlineapps - Fatal编程技术网

如何通过javascript文件api读取大的(>;300 MB)图像或视频文件,将其存储在本地,检索并显示?

如何通过javascript文件api读取大的(>;300 MB)图像或视频文件,将其存储在本地,检索并显示?,javascript,blob,indexeddb,fileapi,offlineapps,Javascript,Blob,Indexeddb,Fileapi,Offlineapps,我必须阅读一个用户使用javascript的文件api上传的大文件。由于此文件很大,按原样读取会导致浏览器崩溃。所以,我对文件进行切片,它形成一个blob数组(切片方法可以创建任何其他类型的数组吗?) JS代码: var chunkSize = 100000; var currentStart = 0; var currentEnd = Math.min(currentStart+chunkSize, file.size); while(currentEnd != file.size){

我必须阅读一个用户使用javascript的文件api上传的大文件。由于此文件很大,按原样读取会导致浏览器崩溃。所以,我对文件进行切片,它形成一个blob数组(切片方法可以创建任何其他类型的数组吗?)

JS代码:

var chunkSize = 100000; 
var currentStart = 0;
var currentEnd = Math.min(currentStart+chunkSize, file.size);
while(currentEnd != file.size){
        var blobPart = file.slice(currentStart, currentEnd);
        blobs.push(blobPart);
        currentStart = currentEnd+1;
        currentEnd =  Math.min(currentStart+chunkSize, file.size);
}
    localforage.setItem(file.name,blobs,function(){
        localforage.getItem(file.name, function(err, value){
            var fullRetrievedBlobArray = [];
            var x = value;

        });     
    });
在此之后,我有一个称为“blob”的blob数组。如何存储此数组(我使用的是localfough(indexeddb))。目前,我正在按原样存储blobs阵列

JS代码:

var chunkSize = 100000; 
var currentStart = 0;
var currentEnd = Math.min(currentStart+chunkSize, file.size);
while(currentEnd != file.size){
        var blobPart = file.slice(currentStart, currentEnd);
        blobs.push(blobPart);
        currentStart = currentEnd+1;
        currentEnd =  Math.min(currentStart+chunkSize, file.size);
}
    localforage.setItem(file.name,blobs,function(){
        localforage.getItem(file.name, function(err, value){
            var fullRetrievedBlobArray = [];
            var x = value;

        });     
    });
把它转换成其他东西有帮助吗?或者我应该读取“blob”数组中的blob并将它们转换为一个大数组?(如果是,我该怎么做?)

检索后,x将包含我存储的blob数组现在如何合并此blob以获取作为大数据url的原始文件?

如果我以类似的方式上传视频?如何合并blob数组以形成数据url,以添加到HTML5视频标记的属性标记?
另外,是否有人可以提供一点关于LocalFlow如何存储此数组的高级解释。它是否直接设置它?

blob构造函数采用缓冲区、字符串和其他blob的混合数组:

var hugeBlob = new Blob(blobs, {type: "video/mp4"});
document.getElementById("video").src = URL.createObjectURL(hugeBlob);

谢谢,我偶然发现了这一点信息,但是,正如你所看到的,我的问题是大文件。如果我把小斑点合并成一个大斑点。我很难再读一遍。例如,我有一个blob数组,大小约为3500,每个10 mb(总共约300 mb)。当我试图阅读这个巨大的blob时,它会使浏览器崩溃。有没有办法读取大的blob,这样它们就不会使浏览器崩溃?@AkshayShinde在任何环境下都不会一次读取大文件。我想说,即使是10mb的块也不必要地大。您已经解决了读取大文件的问题:分块执行。我是在回答你关于如何将水滴切片合并回单个水滴的问题。