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


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 mapreduce工作原理简析
Nov 25 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
Jan 11 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 Javascript
js重写方法的简单实现
Jul 10 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
JS闭包可被利用的常见场景小结
Apr 09 Javascript
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
Vue项目组件化工程开发实践方案
Jan 09 Javascript
axios+Vue实现上传文件显示进度功能
Apr 14 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
用Flash图形化数据(一)
2006/10/09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
社会实践心得体会
2014/01/03 职场文书
服务生自我鉴定
2014/01/22 职场文书
聚美优品广告词改编
2014/03/14 职场文书
文明班级建设方案
2014/05/15 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
java多态注意项小结
2021/10/16 Java/Android