收藏
回答

saveImageToPhotosAlbum 失败,fail invalid file type?



下载时候指定了本地临时文件名,保存相册时候也是指定的临时文件名,后缀是 .jpg 但是仍然提示失败.

回答关注问题邀请回答
收藏

3 个回答

  • 玉之帝
    玉之帝
    2021-03-26

    来来来,都往这里看。以下代码不会再报错异常。

    onSaveClick:function(){
        var that = this;
        wx.showLoading({
          title'下载中...',
        })
        var filename = new Date().getTime()+".jpg";
        var savePath = wx.env.USER_DATA_PATH+"/"+filename
        wx.downloadFile({
          header:'content-type: image/jpg',
          url: that.data.img,
          filePath:savePath,
          success:function(res){
            wx.hideLoading({
              success(res) => {},
            })
            var filePath = res.filePath
            that.setData({filePath:filePath})
            wx.getSetting({
              success(res) => {
                console.log('getSetting', res);
                var writePhotosAlbum = res.authSetting['scope.writePhotosAlbum'];
                if (writePhotosAlbum == true) {
                  that.saveImg()
                }else if(writePhotosAlbum==false){
                  wx.showModal({
                    title'是否授权保存到相册',
                    content'需要获取您的保存图片权限,请确认授权,否则图片将无法保存到相册',
                    successfunction (tip{
                      if (tip.confirm) {
                        wx.openSetting({
                          successfunction (data{
                            if (data.authSetting["scope.writePhotosAlbum"] === true) {
                              that.saveImg()
                            } else {
                              wx.showToast({
                                title'授权失败',
                              })
                            }
                          }
                        })
                      }
                    }
                  })
                }else{
                  that.saveImg()
                }
              },
              failfunction(res{},
              complete() => {}
            })
          }
        })
       
      },
    
      saveImg:function(){
        var filePath = this.data.filePath
        wx.showLoading({
          title'保存中...',
        })
        wx.saveImageToPhotosAlbum({
          filePath: filePath,
          successfunction (res{
            wx.hideLoading({
              success(res) => {},
            })
            wx.showToast({
              title'保存成功',
              icon'success',
              duration1500,
            })
          },
          failfunction (res{
            wx.showToast({
              title"保存失败:"+res.errMsg,
              icon'none',
              duration1500,
            })
          },
          completefunction (res{ },
        })
      },
    
    2021-03-26
    有用
    回复 2
    • 玉之帝
      玉之帝
      2021-03-26
      如果downloadFile方法不指定filePath,保存就会报错。
      注意上方代码,filePath设置前后不一致。

      但是在另外一个小程序就没有问题。至于为啥原因,懒得研究了。
      2021-03-26
      回复
    • 阿斯顿
      阿斯顿
      2021-06-21
      和图片类型有关系。比如链接后缀是.jpg,但是通过浏览器下载下来的后缀是.jpeg。如果指定了filePath相当于规定了后缀
      2021-06-21
      回复
  • 李耀峰
    李耀峰
    2020-09-25

    这俩路径是一样的吧

    2020-09-25
    有用
    回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-09-25

    save的时候应该用这个路径:

    2020-09-25
    有用
    回复 1
    • 阿斯顿
      阿斯顿
      2021-06-21
      你这两个是同一个啊
      2021-06-21
      回复
登录 后发表内容
问题标签