小程序
小游戏
企业微信
微信支付
扫描小程序码分享
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
1、使用Promise.all
//选择产品图片 wx.chooseImage({ count: 9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success : (res)=>{ console.log(res) const tempFilePaths = res.tempFilePaths this.setData({ imagesgoods:tempFilePaths }) var ps = [], len=res.tempFilePaths.length for(var i in tempFilePaths){ ps.push((function(f){ return new Promise((rs, rj)=>{ //上传产品图片到云存诸 wx.cloud.uploadFile({ cloudPath: 'goodsimages/'+new Date().getTime()+'.png', filePath: f, // 文件路径 }).then(res => { rs(res.fileID) }).catch(error => { rj(error) }) }) })(tempFilePaths[i])) } ps.length && Promise.all(ps).then(res=>{ // 上传成功的fileID数组,所有都上传成功才会在这里输出 console.log(res) }).catch(error => { // 其中有一个或以上失败,都会在这里输出 console.error(error) }) } })
2、使用递归上传
xxxx: function(){ var t = this t.uploadedFileIDs = [] //选择产品图片 wx.chooseImage({ count: 9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success : (res)=>{ console.log(res) const tempFilePaths = res.tempFilePaths this.setData({ imagesgoods:tempFilePaths }) var ps = [], len=res.tempFilePaths.length console.log('准备上传文件') t.oneUpload(tempFilePaths, 0) console.log('已上传成功的fileIDs:', t.uploadedFileIDs) } }) }, oneUpload: function(files, idx){ var t = this, file = files[idx] || '', finish = ()=>console.log('上传完毕,上传成功'+t.uploadedFileIDs.length+'张,失败'+(files.length - t.uploadedFileIDs.length)+'张'), checkAndUpload = (idx)=>{ // 判断是否继续上传下一个 idx+1 <= files.length ? t.oneUpload(files, idx+1) : finish() } if(!file) { checkAndUpload(idx) }else{ console.log('正在上传第'+(idx+1)+'张图片:', file) //上传产品图片到云存诸 wx.cloud.uploadFile({ cloudPath: 'goodsimages/'+new Date().getTime()+'.png', filePath: file, // 文件路径 }).then(res => { console.log('上传第'+(idx+1)+'张图片成功,fileID:', res.fileID) // 往uploadedFileIDs里push上传成功返回的fileID t.uploadedFileIDs.push(res.fileID) checkAndUpload(idx) }).catch(error => { console.error('上传文件:'+file+'出错,索引:'+idx, error) checkAndUpload(idx) }) } }
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
你是不是在uploadFile上面有套循环啊?
那你先把老的列表保存一下,然后往后追加。
let newarray = oldarray.push(res.fileId)
let array=[]; ... arrary.push(xxx); setData({xxx:array});
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
1、使用Promise.all
//选择产品图片 wx.chooseImage({ count: 9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success : (res)=>{ console.log(res) const tempFilePaths = res.tempFilePaths this.setData({ imagesgoods:tempFilePaths }) var ps = [], len=res.tempFilePaths.length for(var i in tempFilePaths){ ps.push((function(f){ return new Promise((rs, rj)=>{ //上传产品图片到云存诸 wx.cloud.uploadFile({ cloudPath: 'goodsimages/'+new Date().getTime()+'.png', filePath: f, // 文件路径 }).then(res => { rs(res.fileID) }).catch(error => { rj(error) }) }) })(tempFilePaths[i])) } ps.length && Promise.all(ps).then(res=>{ // 上传成功的fileID数组,所有都上传成功才会在这里输出 console.log(res) }).catch(error => { // 其中有一个或以上失败,都会在这里输出 console.error(error) }) } })
2、使用递归上传
xxxx: function(){ var t = this t.uploadedFileIDs = [] //选择产品图片 wx.chooseImage({ count: 9, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success : (res)=>{ console.log(res) const tempFilePaths = res.tempFilePaths this.setData({ imagesgoods:tempFilePaths }) var ps = [], len=res.tempFilePaths.length console.log('准备上传文件') t.oneUpload(tempFilePaths, 0) console.log('已上传成功的fileIDs:', t.uploadedFileIDs) } }) }, oneUpload: function(files, idx){ var t = this, file = files[idx] || '', finish = ()=>console.log('上传完毕,上传成功'+t.uploadedFileIDs.length+'张,失败'+(files.length - t.uploadedFileIDs.length)+'张'), checkAndUpload = (idx)=>{ // 判断是否继续上传下一个 idx+1 <= files.length ? t.oneUpload(files, idx+1) : finish() } if(!file) { checkAndUpload(idx) }else{ console.log('正在上传第'+(idx+1)+'张图片:', file) //上传产品图片到云存诸 wx.cloud.uploadFile({ cloudPath: 'goodsimages/'+new Date().getTime()+'.png', filePath: file, // 文件路径 }).then(res => { console.log('上传第'+(idx+1)+'张图片成功,fileID:', res.fileID) // 往uploadedFileIDs里push上传成功返回的fileID t.uploadedFileIDs.push(res.fileID) checkAndUpload(idx) }).catch(error => { console.error('上传文件:'+file+'出错,索引:'+idx, error) checkAndUpload(idx) }) } }
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
你是不是在uploadFile上面有套循环啊?
那你先把老的列表保存一下,然后往后追加。
let newarray = oldarray.push(res.fileId)
//选择产品图片
wx.chooseImage({
count: 9,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success : (res)=>{
console.log(res)
const tempFilePaths = res.tempFilePaths
this.setData({
imagesgoods:tempFilePaths
})
var len=res.tempFilePaths.length
for(var i=0;i<len;i++){
console.log(i)
const tempFiles = res.tempFilePaths[i]
console.log(55555555)
console.log(tempFiles)
console.log(66666666666)
//上传产品图片到云存诸
wx.cloud.uploadFile({
cloudPath: 'goodsimages/'+new Date().getTime()+'.png',
filePath: tempFiles, // 文件路径
}).then(res => {
console.log(res.fileID);
let array=[]
array.push(res.fileID);
this.setData({
goodsimage:array
})
}).catch(error => {
// handle error
})
}
}
})
},
let array=[]; ... arrary.push(xxx); setData({xxx:array});