关于小程序的多张图片上传

405 阅读1分钟

1.选择图片

2.上传图片

思路:先把图片一个一个的上传到云存储(因为wx只支持一个一个上传),再等到所有图片上传到云存储后再把返回的fileIds都上传到数据库

submit(){
    wx.showLoading({
        title:'评价中'
    })
    //上传图片到云存储
    let promiseArr[] = [] //建立promise对象数组
    for(let i = 0 ; i<this.data.images.lentg; i++) {
        promiseArr.push(new Promise((resolve,reject)=> {
            let item = this.data.images[i]
            let suffix = /\.\w+$/.exec(item)[0]
            wx.cloud.uploadFile({
                cloudPath:Math.random() + suffix,
                filePath:item//文件路径
                success: res => {
                    //get resource ID
                    this.setData({
                        fileIds:this.data.fileIds.contact(res.fileID)
                    })
                    resolve()
                }
                fail:err => {
                    console.log(err)
                    reject()
                }
                
            })
        })
    }
    //等到所有图片都上传完后,再保存到云数据库
    Promise.all(PromiseArr).then(res => {
        console.log('所有图片上传完成')
        db.collection('comment').add(d:this.data.movieid{
            data:{
                content:this.data.content,
                score:this.data.score,
                fileIds:thsi,data.fileIds,
                movieId:this.data.movieid
            }
        }).then(res => {
            wx.hideLoading()
        }).catch(err => {
            wx.hideLoading()
        })
    }).catch(err => {
        console.log(err)
    })
}