值得注意的是:步骤2储存的base64地址若是过长可能会出现传参出现问题,因此仍是推荐在父组件执行步骤2,获取base64码,或者每选择一张图片上传一次到后台。反正代码和逻辑都在这,怎么修改都行啦html
1.选择图片,保存临时地址vue
// 选择图片
chosseImg() {
const that = this;
let num = 8; //上传的图片最大数量
wx.chooseImage({
count: num - that.imgPathArr.length, //最大图片数量=最大数量-临时路径的数量
sizeType: ["compressed"], //图片尺寸 original--原图;compressed--压缩图
sourceType: ["album", "camera"], //选择图片的位置 album--相册选择, 'camera--使用相机 success: res => { const imgPathArr = this.imgPathArr; this.imgPathArr = []; this.imgPathArr = imgPathArr.concat(res.tempFilePaths); console.log(res.tempFilePaths, "base"); that.updateImg(); } }); }, 复制代码
2.根据临时路径,获取图片base64码。git
//根据临时路径,获取图片base64码。
updateImg() {
const that = this;
this.imgBase = [];
// 根据临时路径数组imgPathArr获取base64图片
this.imgPathArr.map(item=>{
//异步方法
wx.getFileSystemManager().readFile({
filePath: item, //选择图片返回的相对路径
encoding: "base64", //编码格式
success: res => {
//成功的回调
that.imgBase.push({
PicUrl: "data:image/png;base64," + res.data.toString()
});
// 最后一张图片时,返回数据
if(this.imgBase.length===this.imgPathArr.length){
this.$emit("upImgs", this.imgBase);
}
}
});
//同步方法
//let imgItem = wx.getFileSystemManager().readFileSync(item, "base64");
//that.imgBase.push({
// PicUrl: "data:image/png;base64," + imgItem.toString()
//});
// 最后一张图片时,返回数据
//if(this.imgBase.length===this.imgPathArr.length){
//this.$emit("upImgs", this.imgBase);
//}
})
}
复制代码
最后放上封装的组件地址 github.com/Ansxu/upimg…github