wx.getImageInfo() 返回结果的属性临时路径path后缀为.unkown的解决办法

wx.getImageInfo() 返回结果的属性临时路径path后缀为.unkown的解决办法

 

问题描述

本人做后台开发,公司有个需求把一个下载链接生产二维码在小程序端显示,提供用户保存。由于这下载链接会随时变化,我不想把二维码保存到服务器,再用资源访问的方式去浏览,所有我直接把二维码以流的形式输出,在服务器不作保存,懒得再写个定时器去定时删除过期二维码。

然而懒惰总要付出代价的,公司前端告诉我:二维码无法正常保存!

然后我做了测试,在小程序里通过img标签是完全可以显示二维码的,iphone上也可以完美保存二维码,但在安卓机上显示二维码保存失败,报错信息saveImageToPhotosAlbum:fail invalid file type。然后打印wx.getImageInfo()的返回值,path后缀居然为.unkown,导致安卓端的wx.saveImageToPhotosAlbum()无法识别图片类型,瞬间无语了。看图:

wx.getImageInfo({
	src: 'https://域名/项目名/qrcode.action?openId=oxGbN4lm5s&ids=15252&type=buyer',
	success(res) {
		wx.saveImageToPhotosAlbum({
			filePath: res.path,
			success(res) {
				wx.showToast({
				  title: '保存图片成功!',
				})
			},
			fail(res) {
				wx.showToast({
				  title: '保存图片失败!',
				})
			}
		})
	}
})

ps:代码是为了说明问题随手写的测试代码!!!

 

解决办法

经过几次试验我发现,只要wx.getImageInfo() 的src是以图片格式结尾,安卓就可以正常获取照片信息,然后通过wx.saveImageToPhotosAlbum()保存。我就设想能不能仿照一个以图片格式结尾api,但把.action结尾的接口改为.jpg、.png、.jpeg结尾是不现实的,我也不想被人笑话,所有就有了大胆的想法。

随便加个服务器后台不接收参数名在接口的末尾,令它等于.jpeg(可以改为其他格式),例如:

https://域名/项目名/qrcode.action?openId=oxGbN4lm5s&ids=15252&type=buyer&name=.jpeg

整端代码就是

wx.getImageInfo({
	src: 'https://域名/项目名/qrcode.action?openId=oxGbN4lm5s&ids=15252&type=buyer&name=.jpeg',
	success(res) {
		wx.saveImageToPhotosAlbum({
			filePath: res.path,
			success(res) {
				wx.showToast({
				  title: '保存图片成功!',
				})
			},
			fail(res) {
				wx.showToast({
				  title: '保存图片失败!',
				})
			}
		})
	}
})

完美解决问题!!!

写得不好,仅供参考!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章