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


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 自动转到命名锚记
Jan 10 Javascript
JQuery的Alert消息框插件使用介绍
Oct 09 Javascript
jquery与prototype框架的详细对比
Nov 21 Javascript
浅析jquery某一元素重复绑定的问题
Jan 03 Javascript
js HTML5手机刮刮乐代码
Sep 29 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
ES7中利用Await减少回调嵌套的方法详解
Nov 01 Javascript
React 高阶组件入门介绍
Jan 11 Javascript
vue项目实现github在线预览功能
Jun 20 Javascript
ES6使用export和import实现模块化的方法
Sep 10 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
jquery插件实现代码雨特效
Apr 24 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的dl函数用法实例
2014/11/06 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
javascript实现拖放效果
2015/12/16 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
JAVA程序员自荐书
2014/01/30 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
对标管理实施方案
2014/03/12 职场文书
如何写好自荐信
2014/04/07 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python