开发过程中遇到需要将本地图片编码成base64的场景,怕忘记了,所以留个记录。
方法一:
uni.chooseImage({
success: (chooseImageRes) => {
const tempFilePaths = chooseImageRes.tempFilePaths;
plus.io.resolveLocalFileSystemURL(tempFilePaths[0], function( entry ) {
entry.file(function(file){
var fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(file, 'utf-8');
fileReader.onloadend = function(evt) {
console.log(evt.target.result, typeof(evt))
}
fileReader.close()
} );
}, function (error) {
});
}
});
方法二:
需要用到文件服务器,优点是兼容性比较好
uni.chooseImage({
success: (chooseImageRes) => {
const tempFilePaths = chooseImageRes.tempFilePaths;
let url = "上传文件服务器"
uni.request({
url: "上传文件服务器后得到的url",
method: 'GET',
responseType: 'arraybuffer',
success: res => {
console.log(res)
let base64 = wx.arrayBufferToBase64(res.data); //把arraybuffer转成base64
let toBase64Url = 'data:image/jpeg;base64,' + base64; //不加上这串字符,在页面无法显示
console.log(toBase64Url);
}
});
}
});