一般我们图片列表存储在 arr
然后通过接口批量上传
这里通过uni的API 举例,vue 那边自己替换一下 上传方法即可
重点是 如何批量上传 并且 promise 更新图片数据
async checkImgUpload(){
//判断图片是否为空
if(this.photoFiles.length){
//存储上传失败的列表
this.uploadFailImgList = []
//利用 await 可轻松获取 promise 返回的值
//使用 promise .all 配合 map 可以轻松实现 所有 图片上传成功在一起返回结果,避免使用 for 循环,代码优雅且标准
this.photoFiles = await Promise.all(this.photoFiles.map(async item=>{
if(!item.ossId){
return await new Promise((resolve, reject) => {
uni.uploadFile({
url: config.baseUrl + '/system/oss/upload',
filePath: item.url,
name: 'file',
header: { Authorization: 'Bearer ' + this.$store.getters.token },
success: (uploadFileRes) => resolve(uploadFileRes.data),
fail: (err) => reject(err)
})
}).then(res=>{
const data = JSON.parse(res)
return {
url: data.data.url,
ossId: data.data.ossId,
isUploaded: true
}
}).catch((err)=>{ this.uploadFailImgList.push(item);return item })
}else{
return item
}
}))
}
},
网友评论