Javascript 如何发送一个大的压缩文件并重试';x';如果有失败的时候
我有一个大的压缩文件,需要从vue应用程序发送到后端服务器。我将文件切成10MB的块,并使用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
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,然后重新连接,看看它是否正常工作。我没有看到发送到后端服务器的所有文件片段。我知道我的代码工作不正常,但我无法理解。如何使代码正常工作