uniapp保存base64格式圖片的方法首先第一要先獲取用戶的權限
saveAlbum(){//獲取權限保存相冊
uni.getSetting({//獲取用戶的當前設置
success:(res)=> {
// console.log("獲取權限",res);
if(res.authSetting['scope.writePhotosAlbum']){//驗證用戶是否授權可以訪問相冊
this.saveImageToPhotosAlbum();
}else{
uni.authorize({//如果沒有授權,向用戶發起請求
scope: 'scope.writePhotosAlbum',
success:()=> {
this.saveImageToPhotosAlbum();
},
fail:()=>{
uni.showToast({
title:"請打開保存相冊權限,再點擊保存相冊分享",
icon:"none",
duration:3000
});
setTimeout(()=>{
uni.openSetting({//調起客戶端小程序設置界面,讓用戶開啟訪問相冊
success:(res2)=> {
// console.log(res2.authSetting)
}
});
},3000);
}
})
}
}
})
},
第二步是保存的代碼
代碼里面都有清晰的注釋可以看
${this.$u.guid(8)}這里我用的是uview的一個自動生成隨機八位數唯一字段的js 也可以替換成你需要生成的文件名稱 也可以是固定的名稱
saveImageToPhotosAlbum(){
let base64=this.maskData.replace(/^data:image\/\w+;BASE64,/, "");//去掉data:image/png;base64,
let filePath=wx.env.USER_DATA_PATH + `/hym_pay${this.$u.guid(8)}_qrcode.png`;
uni.getFileSystemManager().writeFile({
filePath:filePath , //創建一個臨時文件名
data: base64, //寫入的文本或二進制數據
encoding: 'base64', //寫入當前文件的字符編碼
success: res => {
uni.saveImageToPhotosAlbum({
filePath: filePath,
success: function(res2) {
uni.showToast({
title: '保存成功,請從相冊選擇再分享',
icon:"none",
duration:5000
})
},
fail: function(err) {
// console.log(err.errMsg);
}
})
},
fail: err => {
//console.log(err)
}
})
},