关注分享主机优惠活动
国内外VPS云服务器

微信小程序中下载很多文件的简单包(如何在微信小程序中下载文件)

本文主要介绍一个下载微信小程序很多文件的简单打包例子。小编感觉挺好的。现在分享给大家,给大家一个参考。用小编来看看吧

要求

你需要生成一张宣传图片分享到朋友圈。这张宣传图片含有二维码,不同的背景图片,不同的文字。对于这种镜像生成,我们考虑过使用服务器端生成,但是会消耗服务器性能,所以最终决定使用本地生成。

首先,对小程序有限制。包不能大于2m,我们可能会有多个背景图片,所以我们打算把背景图片和二维码图片放在服务器上,这样可以减小小程序的大小,灵活切换背景图片。

在绘制分享图片时,可以直接使用互联网地址,但是遇到了问题,可能无法生成图片,所以我们需要下载这个图片文件。

微信有下载文件的API,但是返回的是文件的临时路径,只有在小程序的这次启动过程中才能正常使用。如果需要长时间保留,需要主动调用wx.saveFile,以便小程序下次启动时访问。

所以我们先把下载的文件和保存的文件封装起来。

下载并保存文件。

这种方法相对简单

参数:包含以下内容的对象

Id要下载的文件的id是必需的。不发的话默认是下载的网址。您需要id的原因是我们需要下载多个文件,并且我们可以区分一个文件和另一个文件。

下载的url文件的网络地址(需要微信小程序后台配置,具体配置方法请参考微信官方文档)

成功回调的返回参数是一个包含id,savedFilePath的对象

失败回调、下载失败和将所有计数保存为失败。

/* * *下载并保存文件*/Function下载保存文件(obj){ let that = this;让成功= obj.successlet fail = obj.faillet id = & quot";let url = obj.urlif(obj . id){ id = obj . id;} else { id = url}//console . info(& quot;%s开始下载。。。",obj . URL);wx.downloadFile({ url: obj.url,success:function(RES){ wx . save file({ tempfile path:RES . tempfile path,success:function(result){ result . id = id;if(成功){成功(结果);} },失败:函数{ console . info(& quot;保存文件失败”);if(fail){ fail(e);} } }) },失败:函数{ console . info(& quot;下载文件失败”);if(fail){ fail(e);} } })}

下载方法(wx.downloadFile(obj))需要在微信小程序中配置服务器域名。请在小程序后台-设置-开发设置-服务器域名中配置服务器域名。具体请参考微信官方文档。

打包、下载和保存多个文件。

下载并保存多个文件。必须成功下载所有文件才能成功返回。

参数:包含以下内容的对象

url下载地址数组,支持多个url下载[url1,url2]

成功下载成功(所有文件必须下载成功才能成功返回)。回调参数映射,key(id)->+>:value({ id,savedFilePath})

失败下载失败,只要一个方法失败,调用就失败。

/* * *下载并保存多个文件。强制所有文件必须下载成功才能成功返回*/Function DownloadSaveFiles(obj){//console . info("准备下载。。。");让那个=这个;让成功= obj.success//下载成功let fail = obj.fail//下载失败。let urls = obj.urls//下载地址数组,支持多个url下载[url1,URL 2]let save file paths = new map();设urlsLength = urls.length//有几个网址可以下载(设I = 0;我& lturlsLengthi++){ downloadSaveFile({ URL:URLs[I],success:function(RES){//console . dir(RES);//一个下载保存成功的文件让saved file path = RES . saved file path;savedFilePaths.set(res.id,RES);console . info(& quot;saved file path:% s & quot;,saved file path);If(save file paths . size = = urlslength){//如果所有URL都成功,If(success){ success(save file paths)} },fail:function(e){ console . info(& quot;下载失败”);if(fail){ fail(e);} } }) }}

完整的download.js文件

/* * *下载管理器*由General Practice于2018/1/27创建。*/* *下载并保存文件*/function下载保存文件(obj){ let that = this;让成功= obj.successlet fail = obj.faillet id = & quot";let url = obj.urlif(obj . id){ id = obj . id;} else { id = url}//console . info(& quot;%s开始下载。。。",obj . URL);wx.downloadFile({ url: obj.url,success:function(RES){ wx . save file({ tempfile path:RES . tempfile path,success:function(result){ result . id = id;if(成功){成功(结果);} },失败:函数{ console . info(& quot;保存文件失败”);if(fail){ fail(e);} } }) },失败:函数{ console . info(& quot;下载文件失败”);if(fail){ fail(e);}}}}。。");让那个=这个;让成功= obj.success//下载成功let fail = obj.fail//下载失败。let urls = obj.urls//下载地址数组,支持多个url下载[url1,URL 2]let save file paths = new map();设urlsLength = urls.length//有几个网址可以下载(设I = 0;我& lturlsLengthi++){ downloadSaveFile({ URL:URLs[I],success:function(RES){ console . dir(RES);//一个下载保存成功的文件让saved file path = RES . saved file path;savedFilePaths.set(res.id,RES);console . info(& quot;saved file path:% s & quot;,saved file path);If(save file paths . size = = urlslength){//如果所有URL都成功,If(success){ success(save file paths)} },fail:function(e){ console . info(& quot;下载失败”);if(fail){ fail(e);} } })} } module . exports = { downloadSaveFiles:downloadSaveFiles }

使用

先导入

从& quotdownload.js & quot

然后打电话

设url1 = & # 039https://xcx . upload . utan . com/article/cover image/2018/01/25/eyjwawmioiixnte 2 odu 2 nzc 0 njk 3 ocisimrvbwfpbii 6 inv 0 yw 50 b 3v 0 awf vin 0 = & # 039;;设url2 = & # 039https://xcx . upload . utan . com/article/cover image/2018/01/26/eyjwawmioiixnte 2 OTC yndg 0 nduzosismrvwfpbii 6 inv 0 yw 50 B3 v0 awf vin 0 = & # 039;;download . downloadsavefiles({ URLs:[URL 1,url2],success:function(RES){//console . dir(RES);console.info(res.get(url2))。savedFilePath) },失败:函数(e){ console . info(& quot;下载失败”);});

未经允许不得转载:主机频道 » 微信小程序中下载很多文件的简单包(如何在微信小程序中下载文件)

评论 抢沙发

评论前必须登录!