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


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.getScript加载同域JS的代码
Feb 13 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
Jan 24 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
Bootstrap 粘页脚效果
Mar 28 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
Aug 02 Javascript
javascript比较语义化版本号的实现代码
Sep 09 Javascript
vue货币过滤器的实现方法
Apr 01 Javascript
详解cordova打包成webapp的方法
Oct 18 Javascript
在layui中select更改后生效的方法
Sep 05 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 Javascript
微信小程序实现简单购物车功能
Dec 30 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之字符串变相相减的代码
2007/03/19 PHP
php 文件上传系统手记
2009/10/26 PHP
php制作文本式留言板
2015/03/18 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
jQuery示例收集
2010/11/05 Javascript
把字符串按照特定的字母顺序进行排序的js代码
2014/01/28 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
python使用htmllib分析网页内容的方法
2015/05/08 Python
python清除函数占用的内存方法
2018/06/25 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
指针和引用有什么区别
2013/01/13 面试题
哈理工毕业生的求职信
2013/12/22 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
高考励志标语
2014/06/05 职场文书
施工工地安全标语
2014/06/07 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
教师个人发展总结
2015/02/11 职场文书
法院个人总结
2015/03/03 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
七年级作文之环保作文
2019/10/17 职场文书
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫