- wx.compressImage能否支持列表循环压缩?
我的需求是一次选择3张图片,压缩上传;但是在开发中使用for循环图片列表进行压缩时,总是for循环3次后才进入压缩接口的success处理,是怎么回事啊?有处理过多张图片遍历压缩的大神没?急
2020-07-17 - 按照顺序上传图片获取fileID(原方案数据混乱、递归上传方案)
原方案是for遍历(没有改良) 异步导致获取的fileID混乱 云存储里图片是按照顺序上传的,原本以为团队做了递归优化,后来发现不对,再看了看时间确认了异步处理。 [图片] temp为待上传图片数组 [代码]//for遍历原方案:虽然有promise,但是没有抛出数据直接在循环提内setData导致数据混乱 for (let i = 0, len = temp.length; i < len; i++) { httpData.push( new Promise((reslove, reject) => { //cloudPath为文件名 let cloudPath = "postImage/" + new Date().getTime() + temp[i].match(/\.[^.]+?$/)[0]; //上传存储 wx.cloud.uploadFile({ cloudPath, filePath: temp[i], success: (res) => { this.setData({ fileIDs: this.data.fileIDs.concat(res.fileID), }); console.log(res.fileID); reslove(); }, fail: (res) => { console.log(res); }, }); }) ); } //promise后面将得到的数据一起上传数据库 promise.all(httpData).then(){ //下一步 } [代码] 递归上传方案:顺序正确,耗时增加 [代码]//递归上传方案 const upload = function (imgArr, i = 0) { return new Promise((reslove, reject) => { //迭代体放在promise中 let fileIDs = []; function uploadImg(imgArr, i) { if (imgArr.length <= i) { //将fileIDs放入reslove中 reslove(fileIDs); return; } else { let cloudPath = "postImage/" + new Date().getTime() + imgArr[i].match(/\.[^.]+?$/)[0]; //文件名 wx.cloud.uploadFile({ cloudPath, filePath: imgArr[i], success: (res) => { fileIDs.push(res.fileID); uploadImg(imgArr, i + 1); }, }); } } //不要忘记调用 uploadImg(imgArr, i); }); }; //upload传入图片数据等待完成 upload(temp).then(res=>{ //将获取的fileID转换为真实链接 //...... }) [代码] 递归方案之后获取的fileID顺序正确,处理时间也正确 [图片]
2021-05-11 - 小程序chooseImage返回的图片数组不是按点选顺序?
多图上传,在相册按照顺序选择后并不按照顺序显示[图片][图片]
2020-03-10 - chooseMessageFile 返回数组顺序不是点选顺序?
例如我在聊天会话框里面选择了3个文件,点击选择的顺序是文件1、文件2、文件3,接口返回的数组顺序是文件3、文件1、文件2
2021-01-06 - 急!急!急!uploadFile上传图片返回的图片顺序会改变
[图片] [图片] 就是用for循环上传图片,打印出tempFilePaths的路径顺序是对的,但是一张张上传的图片,返回回来的时候会变顺序,而且无规律,跟图片大小也没关系,都有测试过。求大神告知?
2018-08-09