1***@qq.com
plus.zip.compressImage 多图片压缩上传,我就是使用promise实现同步压缩的
selectImg() {
// 从相册中选择图片
var that = this;
if (that.maximum) {
that.ImgCount = that.maximum;
}
var files = [];
mui.plusReady(function() {
plus.gallery.pick(function(e) {
Indicator.open();
var actions = []; // 定义一个空的方法数组
for (var i in e.files) {
var action = () => { // 将每一次循环方法定义为一个方法变量
return new Promise(resolve => { // 每个方法返回一个Promise对象,第一个参数为resolve方法
((index) => {
var path = e.files[index];
var imgName = (new Date()).valueOf();
var imgSuffix = path.substring(path.lastIndexOf('.'), path.length);
plus.zip.compressImage({
src: path, //src: (String 类型 )压缩转换原始图片的路径
dst: "_doc/upload/" + imgName + imgSuffix, //压缩转换目标图片的路径
quality: 60, //quality: (Number 类型 )压缩图片的质量.取值范围为1-100
overwrite: true //overwrite: (Boolean 类型 )覆盖生成新文件
},
function(event) {
files.push({ name: "uploadkey" + index, path: event.target });
resolve();
},
function(error) {
plus.nativeUI.toast("压缩图片失败,请稍候再试");
});
})(i)
})
}
actions.push(action()); // 将每次循环调用的方法添加到方法数组中
}
Promise.all(actions).then(() => { // 调用Promise的all方法,传入方法数组,结束后执行then方法参数中的方法
that.createUpload(files);
});
}, function(e) {}, {
filter: 'image',
multiple: true,
maximum: that.ImgCount,
// system: false,
onmaxed: function() {
plus.nativeUI.alert('最多只能选择' + that.ImgCount + '张图片');
}
});
});
},
2018-01-18 15:03