问题描述
我有一个很大的压缩文件,需要从 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,e);
if(e.code && e.code === 'ECONNABORTED') {
this.timeout = true;
this.showProgressBar = false;
}
});
c = c+1;
start = next_slice;
next_slice = start + chunk_size;
}
});
我尝试关闭我的 wifi 并重新连接,看看它是否有效。我没有看到发送到后端服务器的文件的所有切片。我知道我的代码工作不正常,但我无法弄清楚。我怎样才能让我的代码工作?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)