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: '保存圖片失敗!',
				})
			}
		})
	}
})

完美解決問題!!!

寫得不好,僅供參考!!!

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