釘釘小程序直接預(yù)覽base64圖片會(huì)報(bào)錯(cuò)怀读,需要先將Base64圖片臨時(shí)保存入手機(jī)后酥郭,通過(guò)臨時(shí)地址預(yù)覽,代碼如下:
經(jīng)過(guò)測(cè)試愿吹,模擬器不能預(yù)覽base64圖片,會(huì)報(bào)錯(cuò)提示只支持 http 圖片鏈接惜姐,可用下面方法進(jìn)行緩存預(yù)覽
但是犁跪!真機(jī)上,緩存圖片預(yù)覽會(huì)顯示圖片不存在歹袁,但是用fileManager.access驗(yàn)證又顯示文件存在坷衍,但是預(yù)覽不出來(lái)...
去掉緩存代碼后發(fā)現(xiàn),真機(jī)可以直接預(yù)覽base64格式圖片条舔。(吐血)不過(guò)一切肯定以真機(jī)為主.
previewPic(e) {
let url = e.currentTarget.dataset.url;
if (url.indexOf('base64') > -1) {
var imgPath = dd.env.USER_DATA_PATH + '/e-invoice' + Date.parse(new Date()) + '.png';
var imageData = url.replace(/^data:image\/\w+;base64,/, "");
var fileManager = dd.getFileSystemManager();
fileManager.writeFile({
filePath: imgPath,
data: imageData,
encoding:'base64',
success: (res) => {
url = imgPath;
}
})
}
dd.previewImage({
current: 0,
urls: [url],
});
}
每次進(jìn)入頁(yè)面時(shí)刪除之前的緩存
onShow(){
//刪除本地臨時(shí)緩存圖片
let fileManager = dd.getFileSystemManager();
fileManager.stat({
path: `${dd.env.USER_DATA_PATH}`,
recursive: true,
success: (res) => {
for (let i in res.stats) {
if (i.split('/').length > 0 && i.split('/')[1] != '') {
fileManager.unlink({
filePath: `${dd.env.USER_DATA_PATH}` + i,
success(res) {
console.log(res)
},
fail(err) {
console.error(res)
}
})
}
}
},
fail: (err) => {
console.log(err)
}
})
}