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


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 相关文章推荐
Javascript 实用小技巧
Apr 07 Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
jQuery(非HTML5)可编辑表格实现代码
Dec 11 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
Jun 15 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
用 js 的 selection range 操作选择区域内容和图片
Apr 18 Javascript
vue 动态修改a标签的样式的方法
Jan 18 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 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中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
基于ionic实现下拉刷新功能
2018/05/10 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
浅谈python中的占位符
2017/11/09 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
九年级化学教学反思
2014/01/28 职场文书
大学生社团活动总结
2014/04/26 职场文书
拓展训练激励口号
2014/06/17 职场文书
机械操作工岗位职责
2014/08/08 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
贷款收入证明格式
2015/06/24 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
SQL 聚合、分组和排序
2021/11/11 MySQL
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle