小程序开发中如何实现一个图片上传功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
具体内容如下
Page({ /** * 页面的初始数据 */ data: { pics: [], count: 9, //上传图片最大数量 // showImgUrl: "", //路径拼接,一般上传返回的都是文件名, uploadImgUrl: 'https://xxx/UploadHandler.ashx', //图片的上传的路径 detailPics: [], //上传的结果图片集合 }, selectimages() { var that = this; var detailPics = that.data.detailPics; if (detailPics.length >= that.data.count) { wx.showToast({ title: '最多选择' + that.data.count + '张!', }) return; } wx.chooseImage({ count: that.data.count, // 最多可以选择的图片张数,默认9 sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有 sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有 success: function(res) { var imgs = res.tempFilePaths; for (var i = 0; i < imgs.length; i++) { that.data.pics.push(imgs[i]) } that.setData({ pics: that.data.pics }) console.log(that.data.pics) that.uploadimg({ url: that.data.uploadImgUrl, //这里是你图片上传的接口 path: that.data.pics, //这里是选取的图片的地址数组 }); }, }) }, //多张图片上传 uploadimg: function(data) { wx.showLoading({ title: '上传图片中...', mask: true, }) var that = this, i = data.i ? data.i : 0, success = data.success ? data.success : 0, fail = data.fail ? data.fail : 0; wx.uploadFile({ url: data.url, filePath: data.path[i], name: 'fileData', formData: null, success: (resp) => { wx.hideLoading(); success++; var str = resp.data //返回的结果,可能不同项目结果不一样 var pic = JSON.parse(str); var pic_name = pic.url; var detailPics = that.data.detailPics; detailPics.push(pic_name) that.setData({ detailPics: detailPics }) }, fail: (res) => { fail++; console.log('fail:' + i + "fail:" + fail); }, complete: () => { i++; if (i == data.path.length) { //当图片传完时,停止调用 that.send() console.log('执行完毕'); console.log('成功:' + success + " 失败:" + fail); var myEventDetail = { picsList: that.data.detailPics } // detail对象,提供给事件监听函数 var myEventOption = {} // 触发事件的选项 that.triggerEvent('myevent', myEventDetail, myEventOption) //结果返回调用的页面 } else { //若图片还没有传完,则继续调用函数 data.i = i; data.success = success; data.fail = fail; that.uploadimg(data); //递归,回调自己 } } }); }, })
效果图:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。