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


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 相关文章推荐
关于使用runtimeStyle属性问题讨论文章
Mar 08 Javascript
JS上传前预览图片实例
Mar 25 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
悬浮数字的实现案例
Feb 19 Javascript
深入理解javascript严格模式(Strict Mode)
Nov 28 Javascript
使用jquery实现仿百度自动补全特效
Jul 23 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
Dec 10 Javascript
JavaScript为事件句柄绑定监听函数实例详解
Dec 15 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
十大热门的JavaScript框架和库
Mar 21 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
Sep 04 Javascript
vue element-ui中table合计指定列求和实例
Nov 02 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP4之COOKIE支持详解
2006/10/09 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
深入理解PHP原理之执行周期分析
2016/06/01 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
理解AngularJs指令
2015/12/10 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
js实现无缝轮播图
2020/03/09 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
Javascript基于OOP实实现探测器功能代码实例
2020/08/26 Javascript
Python实现LRU算法的2种方法
2015/06/24 Python
python的pip安装以及使用教程
2018/09/18 Python
python树莓派红外反射传感器
2019/01/21 Python
Python基础知识点 初识Python.md
2019/05/14 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Python网页解析器使用实例详解
2020/05/30 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
后勤岗位职责
2013/11/26 职场文书
运动会通讯稿100字
2014/01/31 职场文书
未婚证明书模板
2014/10/08 职场文书
护理专业自我评价
2015/03/11 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript