微信小程序> 微信小程序下载图片或视频保存到手机系统相册

微信小程序下载图片或视频保存到手机系统相册

浏览量:2283 时间: 来源:DullSwordCN
//downloadSaveFile.js/** * 下载单个文件 * @param {string} [type] * @param {string} url * @callback successCallback * @callback failCallback */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();      }    );  })}/** * 下载多个文件 * @param {string} [type] * @param {string[]} urls * @callback completeCallback */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('');  }  wx.showModal({    title: `成功${success}项,失败${fail}项`,    content: `失败信息:${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 {        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};
const DownloadSaveFile = require('downloadSaveFile.js');downloadSaveFile(e) {  let url = e.currentTarget.dataset.url;  DownloadSaveFile.downloadFile('video', url); //video或image}

 

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎