1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 小程序上传多张图片

小程序上传多张图片

时间:2020-02-02 16:30:10

相关推荐

小程序上传多张图片

任务:小程序上传图片到服务器,最多上传三张,前端可以删除图片

使用到的API有两个:wx.uploadFile wx.chooseImage

示例WXML:

<view class="sale after-pic"><block wx:for="{{imgList}}" wx:key="{{index}}"><view class="pic"><image src="{{item}}" /><icon type="clear" size="20" catchtap="clearImg" data-id="{{index}}"/></view></block><image src="../../images/upload.png" catchtap="chooseImage" /></view><button catchtap="onSub">提交</button>

imgList是wx.chooseImage成功后,返回的图片临时地址

示例JS

Page({data: {imgList:[]},// 使用async await等待图片上传onSub: async function() {// 点击提交后,开始上传图片let imgUrls = []for (let index = 0; index < this.data.imgList.length; index++) {await this.uploadFile(this.data.imgList[index]).then((res) => {// 这里要注意把res.data parse一下,默认是字符串let parseData = JSON.parse(res.data)imgUrls.push(parseData.data) // 图片地址})}console.log(imgUrls) // 3张图片上传成功后,执行其他操作},// 删除某张图片clearImg: function (params) {let imgList = this.data.imgListlet id = params.currentTarget.dataset.id // 图片索引imgList.splice(id, 1) // 删除this.setData({imgList: imgList})},chooseImage: function (params) {wx.chooseImage({count: 3, // 做多3张sizeType: ['original', 'compressed'],sourceType: ['album', 'camera'],success: (res) => {// 存储临时地址this.setData({imgList: res.tempFilePaths})}})},uploadFile: function (filePath) {// 返回Promise是为了解决图片上传的异步问题return new Promise( (resolve, reject) => {wx.uploadFile({url: app.globalData.baseUrl + '/file/upload', // 上传地址filePath: filePath,name: 'file', // 这里的具体值,问后端人员formData: {},header: {"Content-Type": "multipart/form-data"},success: (res) =>{// 图片上传成功后,后端会返回一个地址,可以把它存到imgUrlsthis.imgUrls.push(res.data.data)},fail:(err) => {console.log(err)}})})}})

特别说明一下,截止我写这篇文章为止,小程序还是不支持async/await语法的,所以需要使用regenerator这个库

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。