// 转base64
async urlToBase64(url) {
// 非真机
if (url.startsWith('blob:http:')||url.startsWith('blob:https:')) {
return new Promise((resolve, reject) => {
uni.request({
url: url,
method: 'GET',
responseType: 'arraybuffer',
success: res => {
let base64 = wx.arrayBufferToBase64(res.data);
base64 = 'data:image/jpeg;base64,' + base64;
resolve(base64);
},
fail: err => {
reject(err);
}
});
});
} else {
// 真机
return new Promise((resolve, reject) => {
const systemInfo = uni.getSystemInfoSync();
// 设备类型
if (systemInfo.platform === 'android' || systemInfo.platform === 'ios') {
// 使用 plus.io (Android/iOS)
plus.io.resolveLocalFileSystemURL(url, (entry) => {
entry.file((file) => {
const reader = new plus.io.FileReader();
reader.readAsDataURL(file);
reader.onloadend = () => {
const base64 = reader.result;
resolve(base64);
};
reader.onerror = (err) => {
reject(err);
};
});
}, (err) => {
reject(err);
});
} else {
// 在网页或小程序中使用uni.getFileSystemManager获取本地文件
const fs = uni.getFileSystemManager();
fs.readFile({
filePath: url,
encoding: 'base64',
success: res => {
const base64 = 'data:image/jpeg;base64,' + res.data;
resolve(base64);
},
fail: err => {
reject(err);
}
});
}
});
}
},
//使用
async init(url){
//url:图片路径
const base64Data = await this.urlToBase64(url);
},
亲测可用!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!