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


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 相关文章推荐
基于jquery的inputlimiter 实现字数限制功能
May 30 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
JQuery validate插件验证用户注册信息
May 11 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
vue-router实现编程式导航的代码实例
Jan 19 Javascript
服务端预渲染之Nuxt(使用篇)
Apr 08 Javascript
jQuery位置选择器用法实例分析
Jun 28 jQuery
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时间戳转换的示例
2014/03/31 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
js 窗口抖动示例
2013/09/04 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
javascript中this的四种用法
2015/05/11 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
深入理解js promise chain
2016/05/05 Javascript
js实现5秒倒计时重新发送短信功能
2017/02/05 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
关于ES6箭头函数中的this问题
2018/02/27 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python自动zip压缩目录的方法
2015/06/28 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
人事档案接收函
2014/01/12 职场文书
初三班主任寄语大全
2014/04/04 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
综合管理员岗位职责
2015/02/11 职场文书
老公保证书怎么写
2015/02/26 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
Python字符串的转义字符
2022/04/07 Python