小程序base64转本地临时图片
/*code是指图片base64格式数据*/
//声明文件系统
const fs = wx.getFileSystemManager();
//随机定义路径名称
var times = new Date().getTime();
var codeimg = wx.env.USER_DATA_PATH + '/' + times + '.png';
//将base64图片写入
var that = this;
fs.writeFile({
filePath: codeimg,
data: base64的数据流,
encoding: 'base64',
success: (res) => {
//写入成功了的话,新的图片路径就能用了
console.log(res)
console.log(codeimg)
}
});
小程序 tempFilePaths转base64问题
(arrayBufferToBase64,getFileSystemManager(),Uint8Array)
方法一
开发者工具上chooseImage获取到的图片路径是http://tem
但是真机上获取到的路径不是http://tem类型的,而是wxfile://tmp
真机上报错 request:fail invalid url "wxfile://tmp
因此暂不推荐改方法
uni.request({
url: `${url}`,
method: 'GET',
responseType: 'arraybuffer',
success: res => {
console.log(res.data,'base64')
let base64 = uni.arrayBufferToBase64(res.data); //把arraybuffer转成base64
base64 = 'data:image/jpeg;base64,' + base64; //不加上这串字符,在页面无法显示
// console.log(base64,'base64')
upFile({
'base64': base64
}).then(res2 => {
console.log(res2, "res2res2res2res2")
})
},
fail: (err) => {
console.log('err',err)
}
});
方法二(h5端无法使用)
ChooseImage() {
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: (res) => {
console.log(res, "resresrs")
const tempFilePaths = res.tempFilePaths;
console.log(tempFilePaths[0], "tempFilePaths")
this.imgList = tempFilePaths[0]
this.urlTobase64(tempFilePaths[0])
}
})
},
urlTobase64(url) {
uni.getFileSystemManager().readFile({
filePath:url,
encoding:'base64',
success:res=>{
let base64 = 'data:image/jpeg;base64,' + res.data; //不加上这串字符,在页面无法显示
console.log(base64,"base64")
upFile({
'base64': base64
}).then(res2 => {
console.log(res2.data.url, "res2res2res2res2")
})
}
})
},
方法三(小程序,h5端都可以用)
uni.chooseImage({
count: 1, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有。
sourceType: ['album', 'camera'], //从相册选择。
success(res) {
console.log("res", res);
const arrayBuffer = new Uint8Array(res.tempFilePaths[0]); //将本地图片路径转换成array类型
const base64Img = uni.arrayBufferToBase64(arrayBuffer); //再转换成base64类型
console.log(base64Img) //成品就在这里了
},
fail: (err) => {
console.log('err',err)
}
});
2021-03-08更新
…??? awsl
果断去uniapp插件市场下了一个插件,完美解决问题
完美解决
————————————————
版权声明:本文为CSDN博主「dx_yk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43285572/article/details/111155620
https://www.cnblogs.com/zwyboom/p/12612512.html