当接口只支持上传一张,而业务需求需要多张上传时。。。

89 阅读1分钟

下面方法适用于小程序,也可以把接口改为适用于其他平台的

function uploadFile(newUrl){ // newUrl是本地文件的 tmp 地址
  
  let token = wx.getStorageSync('Token')
    let formData = new FormData();
    formData.appendFile("file", newUrl);
    const data = formData.getData();
    return new Promise((resolve,reject)=>{
      wx.request({
        url:'',//替换为自己的接口请求地址
        method: 'POST',
        header: {
           Authorization:token,
          'content-type': data.contentType
        },
        // timeout:20000,//自己决定是否设置接口超时时间
        data: data.buffer,
        success(res) {
          resolve(res.data)
        },
        fail(res){
           wx.showToast({
            "title": res.errMsg+"请求超时!",
            "icon": "none"
          });
            reject('请求超时')
        }
      });
    })
  }
  const submit=(files)=>{
          const promiseFiles=[]
          files.forEach(ele=>{
            promiseFiles.push(uploadFile(ele))
          })
          Promise.allSettled(promiseFiles).then(res=>{
            //此处可以返回上传情况
          })
  }

小程序中formData方法需要自己写或者网上找,聪明的开发者已经去百度了哈