单独建一个downloadfile.js,将方法导出:
downloadfile.js文件:

//downloadfile.js/*** 下载单个文件*/
function downloadFile(type, url, successc, failc) {checkAuth(() => {wx.showLoading({title: '正在下载',mask: true})downloadSaveFile(type,url,() => {wx.hideLoading();wx.showToast({title: '下载成功',icon: 'none',})successc && successc();},(errMsg) => {wx.hideLoading();wx.showToast({title: errMsg,icon: 'none',})failc && failc();});})
}/*** 下载多个文件*/
function downloadFiles(type, urls, completec) {let success = 0;let fail = 0;let total = urls.length;let errMsgs = [];checkAuth(() => {wx.showLoading({title: '正在下载',mask: true})for (let i = 0; i < urls.length; i++) {downloadSaveFile(type,urls[i],() => {success++;if (success + fail === total) {saveCompleted(success, fail, completec, errMsgs);}},(errMsg) => {fail++;errMsg && errMsgs.push(`视频${i}${errMsg}`);if (success + fail === total) {saveCompleted(success, fail, completec, errMsgs);}});}})
}//保存完成
function saveCompleted(success, fail, completec, errMsgs) {wx.hideLoading();let errMsg = '无';if (errMsgs.length) {errMsg = errMsgs.join('\n');}wx.showModal({title: `成功${success}项,失败${fail}项`,content: `失败信息:\n${errMsg}`,showCancel: false,success(res) {if (res.confirm) {completec && completec();}}})
}//下载文件
function downloadSaveFile(type, url, successc, failc) {wx.downloadFile({url: url,success: res => {if (res.statusCode === 200) {if (type === 'video') {//类型为视频wx.saveVideoToPhotosAlbum({filePath: res.tempFilePath,success: res => {successc && successc();},fail: res => {failc && failc('保存失败');}})} else if (type === 'image') {//类型为图片wx.saveImageToPhotosAlbum({filePath: res.tempFilePath,success: res => {successc && successc();},fail: res => {failc && failc('保存失败');}})}else if(type==='file'){wx.saveFile({tempFilePath: res.tempFilePath,success(res) {const savedFilePath = res.savedFilePathconsole.log(res)}})}} else {failc && failc('状态码非200');}},fail: res => {failc && failc('下载失败');}})
}//检查权限
function checkAuth(gotc) {//查询权限wx.showLoading({title: '检查授权情况',mask: true})wx.getSetting({success(res) {wx.hideLoading();if (!res.authSetting['scope.writePhotosAlbum']) {//请求授权wx.authorize({scope: 'scope.writePhotosAlbum',success() {//获得授权,开始下载gotc && gotc();},fail() {wx.showModal({title: '',content: '保存到系统相册需要授权',confirmText: '授权',success(res) {if (res.confirm) {wx.openSetting({success(res) {if (res.authSetting['scope.writePhotosAlbum'] === true) {gotc && gotc();}}})}},fail() {wx.showToast({title: '打开设置页失败',icon: 'none',})}})}})} else {//已有授权gotc && gotc();}},fail() {wx.hideLoading();wx.showToast({title: '获取授权失败',icon: 'none',})}})
}module.exports = {downloadFile,downloadFiles
};

然后再在需要用的页面导入downloadfile.js

const DownloadSaveFile = require('../../utils/downloadfile.js');/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad: function(options) {},/*** 点击保存图片按钮*/savePhoto(e){let url ='https://...................../test.jpg';DownloadSaveFile.downloadFile('image', url); //video或image}

这样写直接就可以把图片保存到手机相册

微信小程序下载图片获取相册授权,保存视频或图片到手机相册相关推荐

  1. 微信小程序云开发如何实现上传视频 以及 图片

    微信小程序云开发如何实现上传视频 以及 图片 最基础的数据库增删改查,上传到云存储即可实现,附源码 wxml文件 <button bindtap="upload">上传 ...

  2. 微信小程序简单实现获取用户授权、用户头像并保存到本地

    文章目录 一.获取用户授权 二.获取用户头像并保存 三.实现效果 一.获取用户授权 以index单页面示例, 1.在index.js中的Page-data注册canIUse,用于调用微信开放接口申请用 ...

  3. 微信小程序下载网络图片保存到本地

    微信小程序下载网络图片保存到本地 问题背景 前一篇文章介绍了,微信小程序网络请求数据并在页面列表显示(参考 https://blog.51cto.com/baorant24/6189453 ),本文将 ...

  4. uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权

    需求:点击按钮获取当前微信位置,以及点击拒绝授权后,下次点击还可以拉起授权窗口: 拒绝授权后重新拉起授权操作: 直接授权操作: 一.问题1:报authorize scope.userLocation需 ...

  5. 微信小程序下载视频到相册(带进度条)

    微信小程序下载视频到相册,并带进度条 <button class="desc-note my-button u-font-32" @click="toUpload( ...

  6. 微信小程序中如何获取用户手机号授权登录

    随着微信小程序的普及,许多应用程序需要用户登录才能提供更好的服务.而获取用户手机号码是验证用户身份和确保账户安全的重要步骤之一.因此,在本文中,我们将介绍如何在微信小程序中实现手机号授权登录. 步骤一 ...

  7. php网页抓取浏览者手机号码_微信小程序开发之获取用户手机号码(php接口解密)...

    后边要做一个微信小程序,并要能获取用户微信绑定的手机号码.而小程序开发文档上边提供的获取手机号码的接口(getPhoneNumber())返回的是密文,需要服务器端进行解密,但是官方提供的开发文档一如 ...

  8. 微信小程序通过经纬度获取当前省市区及地址信息

    最近接到一个这样的需求. 有一些商户是来自全省不同的地区,通过经纬度查看当前市的商户 微信小程序通过经纬度获取当前省市区及地址信息 这是api最后返回的地址信息,包含的地址信息比较详细 使用方法 第一 ...

  9. 小程序向java后台发送图片_微信小程序在后台如何将二进制流转换成图片

    我在前端请求了小程序码返回的是一堆乱码, java不太熟网上找了一个方法可以将二进制流和图片互转,但是从微信小程序码接口获取的数据用这个方法无法获取正确的图片,不知道哪里有问题: 有没有只在前端就能获 ...

  10. 微信小程序实现登录获取头像昵称

    微信小程序如何来获取用户头像昵称 大家一定对下面这个图不陌生吧,我们在进入小程序之前,都会遇见类似这样的情况,那么这个是怎么用微信开发者工具实现的呢? 要求 1.首先,我们打开微信开发者工具,新建一个 ...

最新文章

  1. OpenGL Blinn-Phong Shader实例
  2. python总结教程_python基础教程总结10——文件
  3. Oracle Segments可以跨多个data files吗?
  4. Oracle truncate和delete的区别
  5. 结构体:struct关键字
  6. Microsoft Loopback Adapter : Oracle 安装
  7. 【MYSQL进阶挑战】筛选排序
  8. 手机怎么打开f12_碰到生僻字看不懂怎么办?打开手机这个开关,一键即可秒懂...
  9. Github上多人协作方式之一
  10. Go语言超全详解(入门级)
  11. windows7下硬盘安装linux
  12. sass实现前端页面基础框架布局
  13. python生成正态分布矩阵_统计学习 | 矩阵正态分布 (matrix normal distribution)
  14. leetcode 2203 单源最短路中转
  15. 使用递归方法查询所有分类(一)
  16. usb触摸屏驱动移植
  17. EL表达式中获取 list集合长度
  18. 随手记:小程序相关知识点
  19. 木兰花令——纳兰性德
  20. Power Automate:发送带有SharePoint列表附件的邮件

热门文章

  1. layer出现Uncaught ReferenceError: layer is not defined错误
  2. 大数据Java基础一
  3. 说说Redis的常用应用场景
  4. Android 从零开始实现微信支付
  5. 风险加权资产(RWA)分析管理系统
  6. [工具设置]使用NSIS制作安装包
  7. 区分各个SQL的概念
  8. 第三方SDK:百度地图(二)定位 + 鹰眼轨迹
  9. DataGrip连接Mysql报08S01解决方案
  10. AES 对称加密算法