多文件逐个上传

6 篇文章 0 订阅
4 篇文章 0 订阅

今天遇到一个问题,客户要求多文件逐个上传,因为如果同时上传会出现高并发的情况,带宽不一定允许,所以采用了逐个下载,自己用的是element框架,但是得分两个按钮才行(先选择文件,再有一个上传按钮);所以最终使用了原生的方法,方法如下:

注意点:1.需要考虑到超时的问题;2.获取的文件集合是个JSON,并不是数组,所以forEach map这种没法用

  • HTML代码块
<input type="file" id="file" @change="jsUp" multiple>
  • Javascript代码块
    jsUp() {
      var files = document.querySelector("#file").files;
      let list = [];
      filesAll = files;
      this.fileLength = filesAll.length;
      this.fileL = filesAll.length;
      this.progressFlagMore = true; // 显示进度条
      this.forB();
    },
    forB() {
      this.setProgress();//可忽略
      if (this.fileLength > 0) {
        this.forUpload();
      } else {
        this.progressFlagMore = false; // 显示进度条//可忽略
        setTimeout(() => {//可忽略
          this.fileN = 0;
          this.fileL = 0;
          this.fileR = 0;
        }, 100);
        this.getList(1);//可忽略
      }
    },
    forUpload() {
      let file = filesAll[0];
      let formData = new FormData();
      formData.append("file", file);
      formData.append("flag", "ywj");
      formData.append("typeId", this.tabsId);
      formData.append("organizationId", this.companyValue);
      return request({
        url: "/file/fileUpload",
        method: "post",
        data: formData,
        timeout: 10000000000,
        headers: {
          "Content-Type": "multipart/form-data",
          Token: getToken(),
        },
      })
        .then((res) => {
          if (res.code == 0) {
            this.$message({
              type: "success",
              message: "上传成功!",
            });
            this.fileN++;
            this.fileLength--;
            this.forB();
          }
        })
        .catch((err) => {
          this.fileLength--;
          this.fileR++;
          this.forB();
        });
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值