小程序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

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐