• 微信小程序图片保存到本地


    微信小程序图片保存到本地是一个常用功能:

    这里讲解下完整实现思路:

      因为微信官方的授权只弹一次,用户拒绝后再次调用,就需要结合button组件的微信开放能力来调起,以下方案在微信各种授权中可参考。

      wxml部分:一个保存图片按钮(A),一个button组件(B)用来触发授权,B透明度为0,盖在A上,用一个变量来控制是否存在页面中。

    <view class='btn ' bindtap='saveImg'>保存</view>
    <button class='openSetting' open-type="openSetting" bindopensetting='handleSetting' hidden='{{openSettingBtnHidden}}'>授权</button>
    

      js中:

    data:{
      openSettingBtnHidden: true,//是否授权
      imgUrl: '图片地址'
    },
    
    // 保存图片
      saveImg:function(e){
        let that = this;
    
        //获取相册授权
        wx.getSetting({
          success(res) {
            if (!res.authSetting['scope.writePhotosAlbum']) {
              wx.authorize({
                scope: 'scope.writePhotosAlbum',
                success() {
                  //这里是用户同意授权后的回调
                  that.saveImgToLocal();
                },
                fail() {//这里是用户拒绝授权后的回调
                  that.setData({
                    openSettingBtnHidden: false
                  })
                }
              })
            } else {//用户已经授权过了
              that.saveImgToLocal();
            }
          }
        })
    
      },
      saveImgToLocal: function (e) {
        let that = this;
     
        let imgSrc = that.data.imgUrl;
        wx.downloadFile({
          url: imgSrc,
          success: function (res) {
            console.log(res);
            //图片保存到本地
            wx.saveImageToPhotosAlbum({
              filePath: res.tempFilePath,
              success: function (data) {
                wx.showToast({
                  title: '保存成功',
                  icon: 'success',
                  duration: 2000
                })
              },
            })
          }
        })
    
      },
    
      // 授权
      handleSetting: function (e) {
        let that = this;
        // 对用户的设置进行判断,如果没有授权,即使用户返回到保存页面,显示的也是“去授权”按钮;同意授权之后才显示保存按钮
    
        if (!e.detail.authSetting['scope.writePhotosAlbum']) {
          // wx.showModal({
          //   title: '警告',
          //   content: '若不打开授权,则无法将图片保存在相册中!',
          //   showCancel: false
          // })
          that.setData({
            openSettingBtnHidden: false
          })
        } else {
          // wx.showModal({
          //   title: '提示',
          //   content: '您已授权,赶紧将图片保存在相册中吧!',
          //   showCancel: false
          // })
          that.setData({
            openSettingBtnHidden: true
          })
        }
      },
    有人住高楼,有人处深沟。 有人光万丈,有人一生绣。 时光是匆匆,回首无旧梦。 人生若几何,凡尘事非多。 深情总遗却,妄自也洒脱。
  • 相关阅读:
    【Winform】Find out the changed rows in DataGridView
    DataGridView merge colunm header
    Spread日付セールのカレンダーに本日を初期値として表示する
    JLPT
    sql server数据库是否区分大小写的设置
    IIS7に.NET Framework 4を登録する
    [翻译]使用ASP.NET AJAX让GridView的数据行显示提示框(ToolTip)
    SILVERLIGHT开始在整个网站积累更深入的体验(转载)
    net连接access数据库,输出结果到页面
    利用JavaScript实现简单的拖动层(只使用于IE)
  • 原文地址:https://www.cnblogs.com/nanyang520/p/11103094.html
Copyright © 2020-2023  润新知