微信小程序下载网络图片保存到本地

问题背景

前一篇文章介绍了,微信小程序网络请求数据并在页面列表显示(参考 https://blog.51cto.com/baorant24/6189453 ),本文将介绍微信小程序是如何获取网络图片并保存到本地的。

问题分析

关键环节分析如下:

(1)微信小程序判断目录/文件是否存在 FileSystemManager.access(Object object),参考官方文档( https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.access.html ),示例代码如下:

const fs = wx.getFileSystemManager()
// 判断文件/目录是否存在
fs.access({path: `${wx.env.USER_DATA_PATH}/hello.txt`,success(res) {// 文件存在console.log(res)},fail(res) {// 文件不存在或其他错误console.error(res)}
})// 同步接口
try {fs.accessSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
} catch(e) {console.error(e)
}

(2)FileSystemManager.access 的同步版本 FileSystemManager.accessSync(string path),参考官方文档( https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.accessSync.html ),示例代码如下:

const fs = wx.getFileSystemManager()
// 判断文件/目录是否存在
fs.access({path: `${wx.env.USER_DATA_PATH}/hello.txt`,success(res) {// 文件存在console.log(res)},fail(res) {// 文件不存在或其他错误console.error(res)}
})// 同步接口
try {fs.accessSync(`${wx.env.USER_DATA_PATH}/hello.txt`)
} catch(e) {console.error(e)
}

(3)获取图片信息。网络图片需先配置download域名才能生效。 wx.getImageInfo(Object object),参考官方文档( https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.getImageInfo.html ),示例代码如下:

wx.getImageInfo({src: 'images/a.jpg',success (res) {console.log(res.width)console.log(res.height)}
})

问题解决

话不多说,直接上代码。

(1)index.js文件,代码如下:

// pages/healdata/healthydata.ts
Page({/*** 页面的初始数据*/data:{code:"0",location:[],imageUrl: "https://profile-avatar.csdnimg.cn/default.jpg!0"},/* 保存图片 */save_photo: function () {const fs = wx.getFileSystemManager()var isExist = false; //目录是否存在var that = this;// 同步接口,判断路径是否存在try {fs.accessSync(`${wx.env.USER_DATA_PATH}/photoinvoice/1553115`)isExist = true;} catch (e) {console.error(e)}if (isExist != true) {// 同步接口,创建目录try {fs.mkdirSync(`${wx.env.USER_DATA_PATH}/photoinvoice/1553115`, true)console.log('mkdirSync')} catch (e) {console.error(e)}}console.log('USER_DATA_PATH: ' + `${wx.env.USER_DATA_PATH}/photoinvoice/1553115`)console.log('imageUrl: ' + that.data.imageUrl)// 获取图片wx.getImageInfo({src: this.data.imageUrl,success: function (res) {var path = res.path;console.log("path: " + path) var startPos = path.lastIndexOf("//");console.log(startPos)var picName = path.slice(startPos + 2, path.length); //加2是为了从//后面截取。所以+2,把//过滤掉console.log("picName " + picName)fs.saveFile({tempFilePath: path,filePath: `${wx.env.USER_DATA_PATH}/photoinvoice/1553115/${picName}`, //保存的时候必须跟上路径和文件名success: function (res) {console.log("保存成功")console.log(res)},fail: function (res) {console.log("保存失败")console.log(res)}})}})},
})

(2)index.wxml文件,代码如下:

<view><button class="buttonStyle" type="primary" bindtap="save_photo">请求网络</button><view>结果返回:{{code}}</view>
</view>

(3)index.wxss文件,代码如下:

/* 设置swiper组件的宽高 */
.swiper{width: 100%;height: 600rpx;
}
/* 设置swiper组件里面图片的宽高 */
.image{width: 100%;height: 600rpx;
}.content1{/* text-align: center; */display: flex;flex-direction: row;justify-content: space-between;margin: 10rpx;
}.buttonStyle{margin-top: 120rpx;
}.place{font-style: italic;
}

模拟器运行结果如下: 保存文件到本地系统目录失败,报错: "saveFile:fail no such file or directory http://usr/photoinvoice/1553115/tmp/9UXFbyUvzCtwc7bc5bf164499999108eb505ceca5952.png"。

解决方案: 切换到真机测试

运行结果如下:

问题总结

本文介绍了微信小程序是如何获取网络图片并保存到本地的,有兴趣的同学可以进一步深入研究。

微信小程序下载网络图片保存到本地相关推荐

  1. 微信小程序下载图片保存到本地

    <image src="{{image}}" class="slide-image" mode="widthFix" bindload ...

  2. 微信小程序下载文件至本地,并打开文档

    微信小程序下载文件至本地,并打开文档 downloadfile(e){var url = e.currentTarget.dataset.url;//下载文件,生成临时地址wx.downloadFil ...

  3. 微信小程序之生成图片保存到相册

    微信小程序之生成图片保存到相册 需求概要 电商项目中需要将自己小店的商品带上自己的小程序码生成海报,保存到本地,然后分享到万能的朋友圈,QQ空间,微博等等来广而告之- 如下图,三种海报格式轮播展示,左 ...

  4. 微信小程序下载视频到相册(带进度条)

    微信小程序下载视频到相册,并带进度条 <button class="desc-note my-button u-font-32" @click="toUpload( ...

  5. 小程序权限设置:小程序下载图片保存到相册拒绝权限后,再次打开权限的解决方案

    小程序下载图片保存到相册功能,首次操作会提示:保存图片或视频到你的相册,有'拒绝'和'允许'两个选项,如果选择了拒绝就会保存失败:saveImageToPhotosAlbum:fail auth de ...

  6. 微信小程序下载与注册

    微信小程序下载 :点击进入 下载任意一个都可以:我个人是稳定版 下载完打开 工具显示: 为了方便使用获取AppID我们需要注册微信小程序: 用自己邮箱注册之后进去找到开发者管理 这就找到了我们所需要的 ...

  7. 微信小程序表单提交php存储,微信小程序实现form表单本地储存数据

    本文实例为大家分享了微信小程序实现form表单本地储存数据的具体代码,供大家参考,具体内容如下 效果图: 主要利用小程序的getStorage来实现异步本地储存. 小程序目录结构如下: 新建项目前,为 ...

  8. 微信小程序 - 下载文件到本地、打开文档

    前言 需求场景描述:接口获取到服务器的文件地址,然后在小程序中下载文件到本地手机上.根据文件格式,下载类型分为下面四种情况: 下载图片到本地 下载视频到本地 打开文档,支持格式:doc, xls, p ...

  9. 微信小程序下载保存文件

    前言 总是有需求想在微信小程序里面做下载文件并保存的功能,所以自己整理了一下小程序涉及到下载api,大致理了下在小程序里面下载的流程和解决方案. 一.涉及api 1.wx.saveFile() ​ 文 ...

最新文章

  1. esl8266开发之旅_从ESL老师到越南软件开发人员的旅程
  2. Grunt安装中遇到的问题汇总
  3. 大型网站系统架构演化之路(转)
  4. Qos和区分服务(DiffServ)
  5. 使用7zip压解各种文件的经常使用命令
  6. 2013年度10大Android应用
  7. Android 面向切面编程-aspjectj应用
  8. 你知道WPF这三大模板实例运用吗?
  9. ajax应用_AJAX的应用
  10. DeBruijin DFS
  11. 计算机管理模糊,电脑显示器显示有点模糊怎么办
  12. 计算机组成原理 透明性,计算机组成原理试题
  13. IDEA配置hadoop依赖jar包(非Maven)
  14. EBS之JTF_Grid 开发总结
  15. 手把手学会gitbub(4)
  16. QQ游戏当前在线总人数查看
  17. 学习 React.js 需要了解的一些概念
  18. Matlab机械臂综合仿真平台,包含运动学、动力学和控制。 MATLAB机器人仿真正逆运动学simulink轨迹规划 机械臂动力学控制等
  19. python设置子图的坐标_python如何调整子图的大小?
  20. 《架构即未来》-技术与商业须融汇贯通!前eBay CTO的实战真经

热门文章

  1. Linux 服务器挂载移动硬盘文件拷贝
  2. JS数组添加元素的三种方式
  3. Linux下Stunnel的安装和使用
  4. 澳大利亚成为ICO理想地
  5. 盘点那些高考语录,总有一句惊呆你!
  6. Spark环境搭建教程
  7. (五)使用IK分词器、扩展ik词库和停词库
  8. 小米邮件遭曝光,红米Note8 Pro售价泄露,网友:这价格也太香了
  9. Android N 7 【 classes.dex】反编译失败:com.googlecode.d2j.DexException: not support version.
  10. translate-102-principle