詳解基于mpvue微信小程序下載遠(yuǎn)程圖片到本地解決思路
說明
最近有些空余時間開始著手優(yōu)化我那個吉他自學(xué)小助手的微信小程序,其中有一個功能是下載吉他譜到本地,開始以為只是很簡單的拿到圖片url然后down下來就好了,其實不然...最終通過google解決了這個問題,現(xiàn)在記錄一下,以便后續(xù)翻閱。
少廢話先看東西
演示.gif
流程梳理
獲取圖片遠(yuǎn)程地址數(shù)組-->遍歷拿到圖片緩存(臨時地址)(wx.getImageInfo)-->保存緩存圖片到本地(wx.saveImageToPhotosAlbum)
完整代碼
子組件代碼邏輯
//子組件download-file.vue <template> <div></div> </template> <script> export default { props: { urls: { default: ""http://通過父組件傳遞遠(yuǎn)程圖片路徑數(shù)組 } }, watch: { urls() { if (this.urls.length > 0) { this.downLoadImage(this.urls);//監(jiān)聽變化 } } }, methods: { //拿到圖片的臨時路徑 getImageInfo(url) { var cache = {}; return new Promise((resolve, reject) => { /* 獲得要在畫布上繪制的圖片 */ if (cache[url]) { resolve(cache[url]); } else { const objExp = new RegExp( /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/ ); if (objExp.test(url)) { wx.getImageInfo({ src: url, complete: res => { if (res.errMsg === "getImageInfo:ok") { cache[url] = res.path; resolve(res.path); } else { reject(new Error("getImageInfo fail")); } } }); } else { this.cache[url] = url; resolve(url); } } }); }, downLoadImage(urls) { const vm = this; let temp = []; if (urls.length > 0) { urls.map((item, index) => { vm.getImageInfo(item).then(res => { temp.push(res); vm.saveImageToLocal(res); }); }); } }, saveImageToLocal(path) { //保存臨時圖片到本地 wx.saveImageToPhotosAlbum({ filePath: path, success(res) { console.log("success"); }, fail: function(res) { console.log(res); } }); } } }; </script> <style> </style>
在父組件中引用
//news/detail.vue //省略代碼... <button @click="download">下載</button> //省略代碼... <download-file :urls="downLoadUrls" ref="myDownload"></download-file> //省略代碼... async download() { let vm = this; const temp = []; let data = await vm.$net.get(vm.$apis.articleDetails, { id: vm.item.id }); if (data.article.body.length > 0) { data.article.body.map((item, index) => { if (item.type == "img") { temp.push(item.data); } }); } vm.downLoadUrls = temp; },
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue+Java+Base64實現(xiàn)條碼解析的示例
- 在vue中使用Base64轉(zhuǎn)碼的案例
- VueQuillEditor富文本上傳圖片(非base64)
- Vue實現(xiàn)base64編碼圖片間的切換功能
- Vue項目pdf(base64)轉(zhuǎn)圖片遇到的問題及解決方法
- 解決vue-quill-editor上傳內(nèi)容由于圖片是base64的導(dǎo)致字符太長的問題
- vue.js圖片轉(zhuǎn)Base64上傳圖片并預(yù)覽的實現(xiàn)方法
- vue項目base64字符串轉(zhuǎn)圖片的實現(xiàn)代碼
- vue下載二進(jìn)制流圖片操作
- vue將文件/圖片批量打包下載zip的教程
- Vue使用Canvas繪制圖片、矩形、線條、文字,下載圖片
- vue 通過base64實現(xiàn)圖片下載功能
相關(guān)文章
vue3?+?element-plus?的?upload?+?axios?+?django?實現(xiàn)文件上
這篇文章主要介紹了vue3?+?element-plus?的?upload?+?axios?+?django?文件上傳并保存,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01fullcalendar日程管理插件月份切換回調(diào)處理方案
這篇文章主要為大家介紹了fullcalendar日程管理插件月份切換回調(diào)處理的方案示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03基于vue-draggable 實現(xiàn)三級拖動排序效果
這篇文章主要介紹了基于vue-draggable 實現(xiàn)三級拖動排序效果,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01Vue+Element實現(xiàn)動態(tài)生成新表單并添加驗證功能
這篇文章主要介紹了Vue+Element實現(xiàn)動態(tài)生成新表單并添加驗證功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05Vue的Eslint配置文件eslintrc.js說明與規(guī)則介紹
最近在跟著視頻敲項目時,代碼提示出現(xiàn)很多奇奇怪怪的錯誤提示,百度了一下是eslintrc.js文件沒有配置相關(guān)命令,ESlint的語法檢測真的令人抓狂,現(xiàn)在總結(jié)一下這些命令的解釋2020-02-02