1. 程式人生 > 實用技巧 >微信小程式儲存圖片到相簿

微信小程式儲存圖片到相簿

1、經常會碰到這個場景:長按儲存圖片到相簿。
小程式儲存圖片到相簿需要獲取使用者的授權才可以儲存成功,所以首先我們需要獲取小程式的授權狀態(拒絕/授權),授權狀態會被記錄在小程式快取中,只有刪除小程式後才會被清除;如果已經拒絕或者授權都不會再展示授權彈窗,所以如果需要拒絕後再次開啟授權,只能通過wx.openSetting來開啟授權頁來設定,但是wx.openSetting只能在bindtap事件下觸發,所以需要去考慮如何處理長按的問題。授權成功後我們首先應該用wx.downloadFile去下載圖片,如果不下載直接呼叫wx.saveImageToPhotosAlbum會直接fail並且告訴你沒有這個檔案。另外記得公眾平臺配置download域名。

  saveImg (e) {
    let that = this
    let url = e.currentTarget.dataset.url
    wx.getSetting({
      success: function (res) {
        if (res.authSetting['scope.writePhotosAlbum'] == false) {
          wx.openSetting({
            success: (result)=>{
              console.log(result)
              wx.authorize({
                scope: 'scope.writePhotosAlbum',
                success: function (res) {
                  console.log("授權成功");
                  that.loadImg(url)
                }    
              })              
            },
            fail: (err)=>{
              mainService.modal(err)
            }
          })
        } else {
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success: function (res) {
              console.log("授權成功");
              that.loadImg(url)
            }    
          })            
        }
      }
    })
  },
  loadImg (url) {
    wx.downloadFile({
      url,
      success: function (res) {
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success: function (res) {
            mainService.toast('儲存成功')
          },
          fail: (err)=>{
            mainService.toast('儲存失敗:', err)
          }                  
        })
      }
    })
  }