微信小程序在上传图片这一块,前端图片上传上去以后需要转成base64的格式传给后端,但是转成base64以后数据太长,调用setdata就会报错按网上看到的说法,我把数据切成一段一段少于1024的长度一个就行,但是实际上传也不行不知道是哪里出了问题,这种有什么更好的解决方案吗
let copyright_dict = {}
for (let i = 0; i < that.data.group_array.copyright_imgs.length; i++) {
let copyright_arr = {};
that.data.group_array.back_copyright_imgs["copyright_arr" + i] = []
// 控制长度
let n = 1000;
// 转base64
var base64_str = 'data:image/jpeg;base64,' + wx.getFileSystemManager().readFileSync(that.data.group_array.copyright_imgs[i], "base64");
for (var j = 0, l = base64_str.length; j < l / n; j++){
var a = base64_str.slice(n * j, n * (j + 1));
that.data.group_array.back_copyright_imgs["copyright_arr" + i].push(a)
that.setData({
"group_array.back_copyright_imgs": that.data.group_array.back_copyright_imgs
})
}
}
转本地图片再赋值
wx.chooseImage({
success: res => {
wx.getFileSystemManager().readFile({
filePath: res.tempFilePaths[0], //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: res => { //成功的回调
console.log('data:image/png;base64,' + res.data)
}
})
//以下两行注释的是同步方法
//let base64 = wx.getFileSystemManager().readFileSync(res.tempFilePaths[0], 'base64')
//console.log(base64)
}
})