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


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获得地址栏参数的两种方法
Nov 08 Javascript
网页广告中JS代码的信息监听示例
Apr 02 Javascript
jquery if条件语句的写法
May 19 Javascript
jQuery中slidedown与slideup方法用法示例
Sep 16 Javascript
Angular开发者指南之入门介绍
Mar 05 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
原生javascript AJAX 三级联动的实现代码
May 04 Javascript
vue-cli项目修改文件热重载失效的解决方法
Sep 19 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
JavaScript实现汉字转换为拼音及缩写的方法示例
Mar 28 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 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使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
js实现表格字段排序
2014/02/19 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
js实现随机点名小功能
2017/08/17 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
Python import与from import使用及区别介绍
2018/09/06 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
介绍一下JMS编程步骤
2015/09/22 面试题
新闻专业本科生的自我评价分享
2013/11/20 职场文书
学生安全责任书范本
2014/07/24 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
地方课程教学计划
2015/01/19 职场文书
实习介绍信模板
2015/01/30 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
OpenCV绘制圆端矩形的示例代码
2021/08/30 Python
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python