如何在切片中发送大型压缩文件并在失败时重试“x”次

问题描述

我有一个很大的压缩文件,需要从 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 (将#修改为@)