微信小程序保存多张图片的实现方法


Posted in Javascript onMarch 05, 2019

前言

使用promise 队列,保存多张图片到手机相册

问题:有些手机会出现只能保存五张图片,报错信息:无法写入

promise需要好好学习

核心代码

// pages/saveImgs/index.js
import { writePhotosAlbum } from '../../utils/util'
Page({
 /**
  * 页面的初始数据
  */
 data: {
  list: [
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160008479.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160013201.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160015969.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160025498.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160031519.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160042689.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160108243.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190301160111756.jpg',
   'https://timgs.top1buyer.com/admin/special/special_img_20190304160141454.jpg'
  ],
  loading:false
 },

 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function(options) {},
 // 下载图片
 downloadImgs() {
  var _this = this
  // 获取保存到相册权限
  writePhotosAlbum(
   function success() {
    wx.showLoading({
     title: '加载中',
     mask: true
    })
    // 调用保存图片promise队列
    _this
     .queue(_this.data.list)
     .then(res => {
      wx.hideLoading()
      wx.showToast({
       title: '下载完成'
      })
     })
     .catch(err => {
      wx.hideLoading()
      console.log(err)
     })
   },
   function fail() {
    wx.showToast({
     title: '您拒绝了保存到相册'
    })
   }
  )
 },
 // 队列
 queue(urls) {
  let promise = Promise.resolve()
  urls.forEach((url, index) => {
   promise = promise.then(() => {
    return this.download(url)
   })
  })
  return promise
 },
 // 下载
 download(url) {
  return new Promise((resolve, reject) => {
   wx.downloadFile({
    url: url,
    success: function(res) {
     var temp = res.tempFilePath
     wx.saveImageToPhotosAlbum({
      filePath: temp,
      success: function(res) {
       resolve(res)
      },
      fail: function(err) {
       reject(res)
      }
     })
    },
    fail: function(err) {
     reject(err)
    }
   })
  })
 }
})

微信小程序保存多张图片的实现方法

项目案例

github地址

git clone https://github.com/sunnie1992/soul-weapp.git

直接用微信小程序开发工具打开就可以看到案例了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用正则表达式 动态创建/增加css style script 兼容IE firefox
Mar 10 Javascript
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
jquery异步调用页面后台方法‏(asp.net)
Mar 01 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
Apr 12 Javascript
jQuery实现滚动效果
Nov 17 jQuery
vuex实现及简略解析(小结)
Mar 01 Javascript
在weex中愉快的使用scss的方法步骤
Jan 02 Javascript
javaScript实现一个队列的方法
Jul 14 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
解决vue-loader加载不上的问题
Oct 21 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
Jan 20 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 #Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 #Javascript
es6数据变更同步到视图层的方法
Mar 04 #Javascript
使用webpack构建应用的方法步骤
Mar 04 #Javascript
详解element-ui中form验证杂记
Mar 04 #Javascript
JS使用数组实现的队列功能示例
Mar 04 #Javascript
JS使用栈判断给定字符串是否是回文算法示例
Mar 04 #Javascript
You might like
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python中文件遍历的两种方法
2014/06/16 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
Python3+Appium安装使用教程
2019/07/05 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
党员违纪检讨书
2014/02/18 职场文书
副主任竞聘演讲稿
2014/08/18 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
高二语文教学反思
2016/02/16 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
导游词之西递宏村
2019/12/10 职场文书