Javascript 如何发送一个大的压缩文件并重试';x';如果有失败的时候

Javascript 如何发送一个大的压缩文件并重试';x';如果有失败的时候,javascript,axios,multipartform-data,axios-retry,Javascript,Axios,Multipartform Data,Axios Retry,我有一个大的压缩文件,需要从vue应用程序发送到后端服务器。我将文件切成10MB的块,并使用axios发送。我还想重新发送任何未发送的切片(由于网络错误)。我使用的是axios retry软件包。这是我的密码: axiosRetry(axios, { retryCondition: (rc) => { console.log(64, 'retrying --- ', rc); }, retries: 3 }); jszip.generateAsync({ type: 'bl

我有一个大的压缩文件,需要从vue应用程序发送到后端服务器。我将文件切成10MB的块,并使用
axios
发送。我还想重新发送任何未发送的切片(由于网络错误)。我使用的是
axios retry
软件包。这是我的密码:

axiosRetry(axios, { retryCondition: (rc) => {
    console.log(64, 'retrying --- ', rc);
  }, retries: 3 });


jszip.generateAsync({ type: 'blob' })
        .then((myzipfile) => {
          // chunking zipped file
          const chunk_size = 10000000;
          const file_size = myzipfile.size;
          let start = 0;
          let next_slice = start + chunk_size;
          let c = 1;
          let each_slice;
          while(start < file_size) {
            if (next_slice > file_size) {
              //next_slice = file_size;
              console.log(269, 'GREATER!!!!!', next_slice - file_size);
              each_slice = myzipfile.slice(start, file_size + 1 , 'Blob');
            } else {
              each_slice = myzipfile.slice(start, next_slice , 'Blob');
            }
            const formData = new FormData();
            formData.append('file', each_slice, `p1.zip.00${c}`);
            formData.append('auth_token', `${TOKEN}`);
            formData.append('expires', `${expiryMinutes}`);

            const config1 = {
              onUploadProgress: function(progressEvent) {
                this.percentCompleted = parseInt(Math.round( (progressEvent.loaded * 100) / progressEvent.total ));
              }.bind(this),
              'Content-Type': 'multipart/form-data',
              timeout: 420000
            };
            axios.post(`${config.backendServer}/submit`, formData, config1).then((res) => {
              this.hasData = true;
              this.isUploading = false;
              console.log(262, c,  'SUCCESS!!', `p1.zip.00${c}`, res.status);
              // this.$emit('valueChanged', { status: res.status });
            })
            .catch((e) => {
              console.log(256, `p1.zip.00${c}`, e);
              if(e.code && e.code === 'ECONNABORTED') {
                this.timeout = true;
                this.showProgressBar = false;
              }
            });
            c = c+1;
            start = next_slice;
            next_slice = start + chunk_size;
          }
        });
axiosRetry(axios,{retryCondition:(rc)=>{
console.log(64,'重试---',rc);
},重试次数:3次);
generateAsync({type:'blob'})
.然后((myzipfile)=>{
//分块压缩文件
const chunk_size=10000000;
const file_size=myzipfile.size;
让start=0;
让下一个\u切片=开始+块大小;
设c=1;
让每一个_切片;
while(开始<文件大小){
如果(下一个切片>文件大小){
//下一个切片=文件大小;
log(269,“更大的!!!”,下一个切片-文件大小);
each_slice=myzipfile.slice(开始,文件大小+1,'Blob');
}否则{
each_slice=myzipfile.slice(开始,下一个_slice,'Blob');
}
const formData=new formData();
append('file',每个_片段,`p1.zip.00${c}`);
append('auth_token',`${token}`);
append('expires',`${expireyminutes}`);
常量配置1={
onUploadProgress:函数(progressEvent){
this.percentCompleted=parseInt(Math.round((progressEvent.loaded*100)/progressEvent.total));
}.绑定(此),
“内容类型”:“多部分/表单数据”,
超时:420000
};
post(`${config.backendServer}/submit`,formData,config1)。然后((res)=>{
this.hasData=true;
this.isupload=false;
log(262,c,'SUCCESS!!','p1.zip.00${c}',res.status);
//这个.$emit('valueChanged',{status:res.status});
})
.catch((e)=>{
log(256,`p1.zip.00${c}`,e);
如果(e.code&&e.code==='ECONNABORTED'){
this.timeout=true;
this.showProgressBar=false;
}
});
c=c+1;
开始=下一个切片;
下一个切片=开始+块大小;
}
});
我试着关掉我的wifi,然后重新连接,看看它是否正常工作。我没有看到发送到后端服务器的所有文件片段。我知道我的代码工作不正常,但我无法理解。如何使代码正常工作