亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

微信小程序之多文件下載的簡單封裝示例

2024-05-06 16:42:11
字體:
來源:轉載
供稿:網友

需求

需要生成一個宣傳的圖片分享到朋友圈,這個宣傳圖片包含二維碼,包含不同的背景圖片和不同的文字。對于這種圖片生成,我們考慮過使用服務端生成,但是這樣會比較耗服務器性能,所以最終決定使用本地生成。

首先小程序有一個限制,包不能大于2m,而且我們可能多個背景圖,所以計劃把背景圖和二維碼圖片放在服務端,這樣可以減少小程序包的大小,也可以靈活的切換背景圖。

在繪制分享圖的時候,可以直接使用互聯網地址,但是遇到了一個問題,有可能不能生成圖片,所以我們需要把這個圖片文件下載下來。

下載文件的方法微信有API,但是返回的是文件的臨時路徑,只在小程序本次啟動期間可以正常使用,如需持久保存,需在主動調用 wx.saveFile,才能在小程序下次啟動時訪問得到。

所以我們先把下載文件和保存文件封裝

封裝下載并且保存一個文件

這個方法比較簡單

參數:一個對象,包含

  1. id 需要下載文件的id,如果不傳默認是下載的url,之所以需要id,是因為我們要做多文件下載,可以區分下載的是一個文件
  2. url 下載文件的網絡地址(需要微信小程序后臺配置,具體配置方法請參考微信官方文檔)
  3. success 成功回調 返回參數是一個對象 包含 id,savedFilePath
  4. fail 失敗回調 ,下載失敗,保存都是都算失敗
/** * 下載保存一個文件 */function downloadSaveFile(obj) {  let that = this;  let success = obj.success;  let fail = obj.fail;  let id = "";  let url = obj.url;  if (obj.id){    id = obj.id;  }else{    id = url;  }  // console.info("%s 開始下載。。。", obj.url);  wx.downloadFile({    url: obj.url,    success: function (res) {      wx.saveFile({        tempFilePath: res.tempFilePath,        success: function (result) {          result.id = id;          if (success) {            success(result);          }        },        fail: function (e) {          console.info("保存一個文件失敗");          if (fail) {            fail(e);          }        }      })    },    fail: function (e) {      console.info("下載一個文件失敗");      if (fail) {        fail(e);      }    }  })}

使用下載方法(wx.downloadFile(obj))需要在微信小程序配置服務器域名,服務器域名請在 小程序后臺-設置-開發設置-服務器域名 中進行配置 ,具體請參考 微信官方文檔

封裝多文件下載并且保存

多文件下載并且保存,強制規定,必須所有文件下載成功才算返回成功

參數:一個對象,包含

  1. urls 下載地址 數組,支持多個 url下載 [url1,url2]
  2. success 下載成功 (必須所有文件下載成功才算返回成功) 回調參數 map ,key(id) -> value ({id,savedFilePath})
  3. fail 下載失敗,只要有一個方法失敗就調用失敗
/** * 多文件下載并且保存,強制規定,必須所有文件下載成功才算返回成功 */function downloadSaveFiles(obj) {  // console.info("準備下載。。。");  let that = this;  let success = obj.success; //下載成功  let fail = obj.fail; //下載失敗  let urls = obj.urls; //下載地址 數組,支持多個 url下載 [url1,url2]  let savedFilePaths = new Map();  let urlsLength = urls.length; // 有幾個url需要下載  for (let i = 0; i < urlsLength; i++) {    downloadSaveFile({      url: urls[i],      success: function (res) {        //console.dir(res);        //一個文件下載保存成功        let savedFilePath = res.savedFilePath;                        savedFilePaths.set(res.id, res);        console.info("savedFilePath:%s", savedFilePath);        if (savedFilePaths.size == urlsLength) { //如果所有的url 才算成功          if (success){            success(savedFilePaths)          }                  }      },      fail: function (e) {        console.info("下載失敗");        if (fail) {          fail(e);        }      }    })  }}

完整的download.js文件

/** * 下載管理器 * Created by 全科 on 2018/1/27. *//** * 下載保存一個文件 */function downloadSaveFile(obj) {  let that = this;  let success = obj.success;  let fail = obj.fail;  let id = "";  let url = obj.url;  if (obj.id){    id = obj.id;  }else{    id = url;  }  // console.info("%s 開始下載。。。", obj.url);  wx.downloadFile({    url: obj.url,    success: function (res) {      wx.saveFile({        tempFilePath: res.tempFilePath,        success: function (result) {          result.id = id;          if (success) {            success(result);          }        },        fail: function (e) {          console.info("保存一個文件失敗");          if (fail) {            fail(e);          }        }      })    },    fail: function (e) {      console.info("下載一個文件失敗");      if (fail) {        fail(e);      }    }  })}/** * 多文件下載并且保存,強制規定,必須所有文件下載成功才算返回成功 */function downloadSaveFiles(obj) {  // console.info("準備下載。。。");  let that = this;  let success = obj.success; //下載成功  let fail = obj.fail; //下載失敗  let urls = obj.urls; //下載地址 數組,支持多個 url下載 [url1,url2]  let savedFilePaths = new Map();  let urlsLength = urls.length; // 有幾個url需要下載  for (let i = 0; i < urlsLength; i++) {    downloadSaveFile({      url: urls[i],      success: function (res) {        console.dir(res);        //一個文件下載保存成功        let savedFilePath = res.savedFilePath;                        savedFilePaths.set(res.id, res);        console.info("savedFilePath:%s", savedFilePath);        if (savedFilePaths.size == urlsLength) { //如果所有的url 才算成功          if (success){            success(savedFilePaths)          }                  }      },      fail: function (e) {        console.info("下載失敗");        if (fail) {          fail(e);        }      }    })  }}module.exports = {  downloadSaveFiles: downloadSaveFiles}

使用

首先導入

import download from "download.js"

之后調用

let url1 = 'https://xcx.upload.utan.com/article/coverimage/2018/01/25/eyJwaWMiOiIxNTE2ODU2Nzc0Njk3OCIsImRvbWFpbiI6InV0YW50b3V0aWFvIn0=';let url2 = 'https://xcx.upload.utan.com/article/coverimage/2018/01/26/eyJwaWMiOiIxNTE2OTcyNDg0NDUzOSIsImRvbWFpbiI6InV0YW50b3V0aWFvIn0=';download.downloadSaveFiles({  urls: [url1, url2],  success: function (res) {    // console.dir(res);       console.info(res.get(url2).savedFilePath)  },  fail: function (e) {    console.info("下載失敗");  });

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产香蕉一区二区三区在线视频| 亚洲va欧美va国产综合久久| 色阁综合伊人av| 91精品国产一区| 精品成人69xx.xyz| 尤物精品国产第一福利三区| 欧美怡春院一区二区三区| 日韩国产高清视频在线| 亚洲欧洲在线播放| 亚洲精品美女在线观看| 美女啪啪无遮挡免费久久网站| 精品福利视频导航| 91成人精品网站| 夜夜嗨av色综合久久久综合网| 北条麻妃99精品青青久久| 青青久久av北条麻妃黑人| 欧美亚洲日本黄色| 91麻豆桃色免费看| 97国产精品视频| 久久久久九九九九| 国产精品一区专区欧美日韩| 亚洲欧美日韩久久久久久| 国产精品免费网站| 国产精品69久久久久| 欧美日韩中文字幕在线| 日韩美女激情视频| 亚洲精品国产电影| 国产精品久久久久久久久久免费| 国产精品成人v| 久久久久久国产精品三级玉女聊斋| 国产精品爱啪在线线免费观看| 国产欧美一区二区三区视频| 国产在线观看精品| 亚洲变态欧美另类捆绑| 91精品国产91久久久久| 91欧美精品午夜性色福利在线| 欧美性videos高清精品| 亚洲bt天天射| 97在线视频免费| 久久久久久噜噜噜久久久精品| 亚洲电影中文字幕| 亚洲色图美腿丝袜| 亚洲石原莉奈一区二区在线观看| 色偷偷9999www| 欧美一区二区三区精品电影| 欧洲亚洲在线视频| 91经典在线视频| 亚洲一区二区自拍| 久久精品国产亚洲| 亚洲国产精品成人va在线观看| 国产成人精品综合久久久| 久久99精品久久久久久琪琪| 国产欧美精品va在线观看| 中日韩美女免费视频网站在线观看| 欧美精品精品精品精品免费| 国产精品吹潮在线观看| 最近2019年中文视频免费在线观看| 国产99久久久欧美黑人| 国产精品久久久久福利| 日韩中文字幕不卡视频| 国产欧美婷婷中文| 欧美精品18videosex性欧美| 精品中文字幕在线| 国产亚洲欧美日韩精品| 国产精品日韩欧美| 亚洲国产日韩精品在线| 日韩精品在线免费观看视频| 欧美日韩国产中文字幕| 欧美精品制服第一页| 精品视频久久久久久久| 国产精品成人一区| 亚洲bt欧美bt日本bt| 欧美理论电影在线播放| 欧美日韩国产综合新一区| 国产精品xxx视频| 欧美日韩成人网| 亚洲美女动态图120秒| 欧美巨猛xxxx猛交黑人97人| 欧美高清自拍一区| 亚洲国产精品电影在线观看| 国产精品成熟老女人| 国产午夜精品理论片a级探花| 91a在线视频| 国产精品美女999| 庆余年2免费日韩剧观看大牛| 爽爽爽爽爽爽爽成人免费观看| 菠萝蜜影院一区二区免费| 91久久在线播放| 亚洲精品成人av| 91九色蝌蚪国产| 欧美激情欧美激情| 国产精品国产自产拍高清av水多| 久久亚洲综合国产精品99麻豆精品福利| 久久精品国产2020观看福利| 日韩午夜在线视频| 美女视频黄免费的亚洲男人天堂| 亚洲欧美在线免费观看| 亚洲免费影视第一页| 日韩成人在线视频| 亚洲护士老师的毛茸茸最新章节| 午夜欧美不卡精品aaaaa| 97视频com| 丝袜亚洲另类欧美重口| 91精品国产色综合久久不卡98| 欧美成人免费网| 亚洲成在人线av| 亚洲国模精品一区| 黑人狂躁日本妞一区二区三区| 欧美影院在线播放| 日本精品久久中文字幕佐佐木| 91成人免费观看网站| 亚洲视频免费一区| 久久久在线免费观看| 色樱桃影院亚洲精品影院| 中文字幕久久亚洲| 欧美人与物videos| 亚洲成人av资源网| 成人黄色av网站| www.日韩不卡电影av| 91久久精品久久国产性色也91| 国产精品久久久久久久久久久久久| 亚洲精品一区二区三区不| 日韩网站在线观看| 在线观看91久久久久久| 欧美黑人xxx| 精品成人在线视频| 日韩在线视频播放| 日本午夜人人精品| 日韩精品一二三四区| 国产日韩中文在线| 亚洲精品久久久久久久久久久久久| 久久免费视频网站| 欧美xxxx综合视频| 国产免费一区二区三区香蕉精| 91精品国产自产在线| 91久久精品日日躁夜夜躁国产| 成人精品福利视频| 136fldh精品导航福利| 欧美性极品少妇精品网站| 91久久精品美女高潮| 亚洲最大av网站| 亚洲福利精品在线| 国产精品热视频| 久久亚洲春色中文字幕| 亚洲欧美一区二区三区在线| 亚洲日本中文字幕免费在线不卡| 97精品一区二区三区| 国产成人精品在线视频| 亚洲精品aⅴ中文字幕乱码| 欧美午夜精品在线| 久久精品色欧美aⅴ一区二区| 亚洲人成在线电影| 久久综合久久美利坚合众国| 欧美亚洲另类激情另类| 热久久免费视频精品| 亚洲成人a**站| 亚洲国产精久久久久久久| 韩国欧美亚洲国产| 欧美专区在线观看| 久久精品视频一| 一区二区三区精品99久久| 一区二区成人精品| 一本色道久久综合狠狠躁篇的优点| 国产欧美日韩综合精品|