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


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类和继承 constructor属性
Mar 04 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
javascript实现可拖动变色并关闭层窗口实例
May 15 Javascript
js实现显示当前状态的导航效果代码
Aug 28 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 Javascript
JS使用eval解析JSON的注意事项分析
Nov 14 Javascript
全面解析Bootstrap图片轮播效果
Dec 03 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
js轮播图代码分享
Jul 14 Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 Javascript
使用javascript做在线算法编程
May 25 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
2010/11/20 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
python多进程共享变量
2016/04/06 Python
深入理解python中的select模块
2017/04/23 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
python+opencv实现阈值分割
2018/12/26 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
如何基于python生成list的所有的子集
2019/11/11 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
奥巴马开学演讲稿
2014/05/15 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
党员个人总结范文
2015/02/14 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书