Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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 ';调试连接已关闭。原因:渲染过程已结束;尝试使用FileReader上载大文件/多个文件时_Javascript_Html_Angular_Typescript_Xmlhttprequest - Fatal编程技术网

Javascript ';调试连接已关闭。原因:渲染过程已结束;尝试使用FileReader上载大文件/多个文件时

Javascript ';调试连接已关闭。原因:渲染过程已结束;尝试使用FileReader上载大文件/多个文件时,javascript,html,angular,typescript,xmlhttprequest,Javascript,Html,Angular,Typescript,Xmlhttprequest,我想上传一些文件。如果文件小于1gb,请完全上载。 如果文件大于1gb,请将其上载为每个最大1gb的段。 我的代码可以在小文件上正常工作,但当我尝试上载大文件时,浏览器崩溃。错误“调试连接已关闭。原因:渲染进程已结束。” 我测试的文件是4,3 GB,将启动5XHR请求 我做错了什么 let count = 0; for (let url of this.urls) { var start = 0 + (idx * 1000000000); var stop

我想上传一些文件。如果文件小于1gb,请完全上载。 如果文件大于1gb,请将其上载为每个最大1gb的段。 我的代码可以在小文件上正常工作,但当我尝试上载大文件时,浏览器崩溃。错误“调试连接已关闭。原因:渲染进程已结束。” 我测试的文件是4,3 GB,将启动5XHR请求

我做错了什么

let count = 0;
  for (let url of this.urls) {
            var start = 0 + (idx * 1000000000);

    var stop = 0;
    if (this.urls.length === 1)
      stop = files[0].size;
    else if (this.urls[this.urls.length - 1] == url)
      stop = start + (files[0].size % 1000000000);
    else
      stop = start + 1000000000;

    var reader = new FileReader();
    // If we use onloadend, we need to check the readyState.
    reader.onloadend = (event) => {
      if (reader.readyState === 2) {
        this._httpService.xhrBlobPut(url, reader.result).subscribe(result => {
          count += 1;
          if (count == this.urls.length) {
            this._storageService.postFile(this.appId, this.fileId, payload).subscribe(result => {
            });
          }
        });
      }
    };
    var blob = files[0].slice(start, stop + 1);

    reader.readAsArrayBuffer(blob);
    this.isUploaded = true;
    idx += 1;
  }



xhrBlobPut(url: string, body: any): Observable<any> {
    return Observable.fromPromise(new Promise((resolve, reject) => {
        let xhr = new XMLHttpRequest();
        xhr.onreadystatechange = function () {
          if (xhr.readyState === 4) {
            if (xhr.status === 200 || xhr.status === 201) {
              resolve(xhr.response)
            } else {
              reject(xhr.response)
            }
          }
        }
        xhr.open("PUT", url);
        xhr.send(body);
    }));
}
let count=0;
for(让此.url的url){
var start=0+(idx*100000000);
var-stop=0;
if(this.urls.length==1)
停止=文件[0]。大小;
else if(this.urls[this.urls.length-1]==url)
停止=开始+(文件[0]。大小%100000000);
其他的
停止=启动+100000000;
var reader=new FileReader();
//如果我们使用onloadend,我们需要检查readyState。
reader.onloadend=(事件)=>{
if(reader.readyState==2){
这是.httpService.xhrbloxput(url,reader.result).subscribe(result=>{
计数+=1;
if(count==this.urls.length){
此.u storageService.postFile(this.appId,this.fileId,payload).subscribe(结果=>{
});
}
});
}
};
var blob=files[0]。切片(开始、停止+1);
reader.readAsArrayBuffer(blob);
this.isupload=true;
idx+=1;
}
xhrBlobPut(url:string,body:any):可观察{
可观察的返回。fromPromise(新承诺)((解决,拒绝)=>{
设xhr=newXMLHttpRequest();
xhr.onreadystatechange=函数(){
if(xhr.readyState==4){
如果(xhr.status==200 | | xhr.status==201){
解析(xhr.response)
}否则{
拒绝(xhr.响应)
}
}
}
xhr.open(“PUT”,url);
xhr.send(body);
}));
}

尝试5次同步调用来完成此操作。。您的浏览器无法处理大量的同时请求。@SunilBN,同步调用可以,但没有办法使用异步而不崩溃吗?感谢您的关注:)我想V8引擎有缓冲限制。。另一种方法是附加较小的块。。我不确定要处理的尺寸是否合适。。