<mp-cells>
<mp-cell>
<mp-uploader
files="{{files}}"
max-count="{{maximgs}}"
max-size="{{10 * 1024 * 1024}}"
title="图片上传"
tips="最多上传三张图片"
size-type="{{sizeType}}"
sourceType="{{sourceType}}"
delete="{{true}}"
select="{{selectFile}}"
upload="{{uplaodFile}}"
binddelete="delimg"
bindfail="uploadError"
bindsuccess="uploadSuccess"
></mp-uploader>
</mp-cell>
</mp-cells>
const app = getApp()
Page({
data: {
maximgs:5,
files: [],
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
},
onLoad: function (options) {
this.setData({
selectFile: this.selectFile.bind(this),
uplaodFile: this.uplaodFile.bind(this)
})
},
selectFile(files) {
wx.showLoading({ title: '', })
},
uplaodFile(files) {
return new Promise((resolve, reject) => {
const tempFilePaths = files.tempFilePaths;
const that = this;
let finished = {url:[]}
for (var i = 0; i < tempFilePaths.length; i++) {
let filePath = tempFilePaths[i]
let cloudPath = 'qyzj' + new Date().getTime() + '-' + i + filePath.match(/\.[^.]+?$/)[0]
wx.cloud.uploadFile({
filePath, cloudPath,
success: function (res) {
if (res.statusCode != 200 && res.statusCode != 204 && res.statusCode != 205) reject('error')
finished.url.push({url:res.fileID})
if (finished.urls.length === tempFilePaths.length || that.data.files.length +finished.urls.length == this.data.maximgs)
resolve(finished)
},
fail: function (err) { console.log(err) }
})
}
})
},
uploadError(e) {
console.log('upload error', e.detail)
wx.hideLoading()
this.setData({ error: "上传失败,可能有些照片过大" })
},
uploadSuccess(e) {
console.log('upload success', e.detail)
this.data.files=this.data.files.concat(e.detail.url)
this.setData({files:this.data.files})
wx.hideLoading()
},
delimg(e) {
this.data.files.splice(this.data.files.findIndex(item => item == e.detail.item), 1)
}
})
普通方式:
<view>
<block wx:for="{{images}}" wx:for-item="src">
<image src="{{src}}"></image>
</block>
<view bindtap="upload">上传</view>
upload(){
let that = this;
wx.chooseImage({
count: 9,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success(res) {
const tempFilePaths = res.tempFilePaths
console.log("选择成功", res)
for (let i = 0; i < tempFilePaths.length; i++) {
wx.cloud.uploadFile({
cloudPath: 'myImage/' + new Date().getTime() + "_" + Math.floor(Math.random() * 1000) + ".jpg",
filePath: tempFilePaths[i],
success: res => {
console.log("上传成功", res.fileID)
that.setData({
images: res.fileID
})
wx.showToast({
title: '上传成功',
})
}
})
}
}
})
}