快应用之保存图片

快应用中的保存图片,有坑,踩着就中了,这里也要区分华为和其他厂商,虽然用调试器,在华为和官方提供的都不会出现问题,但是,在应用上线后就出现华为手机无法保存

1.不同点

  • 华为手机在下载图片时要显示的定义filename字段
  • 先将图片下载为临时文件,然后在图片下载完成后,进行保存到本地
  • 使用request.download进行下载,在这个api中加入filename字段,我这里将当前时间的时间戳作为下载的文件名,然后分割图片的网络路径,获取到图片的后缀名
let photoPath = 'http://xxxxxxx.png';
let list = photoPath.split('.');
/* 用时间来作为图片的名字 */
let timeValue = new Date().valueOf();
/* 获取图片后缀 */
let photoExt = list[list.length - 1];
/* 设置要保存的图片名 */
let filename = `${timeValue}.${photoExt}`;

/* 然后加入filename字段,进行下载操作后对下载任务进行监听 */
  • 之后用request.onDownloadComplete来监听下载任务,若返回1000则下载任务失败
  • 下载成功后使用media.saveToPhotosAlbum来保存图片
let photoPath = 'http://xxxxxxx.png';
let list = photoPath.split('.');
/* 用时间来作为图片的名字 */
let timeValue = new Date().valueOf();
/* 获取图片后缀 */
let photoExt = list[list.length - 1];
/* 设置要保存的图片名 */
let filename = `${timeValue}.${photoExt}`;
request.download({
  url: photoPath,
  filename: filename,
  success: data => {
    /* 监听下载任务:1000下载失败,1001下载任务不存在 */
    request.onDownloadComplete({
      token: data.token,
      success: data => {
        /* 保存图片 */
        media.saveToPhotosAlbum({
          uri: data.uri,
          success: () => {
            prompt.showToast({
              message: '图片保存成功!'
            })
          },
          fail: (data, code) => {
            if(code == 201) {
              prompt.showToast({
                message: '授权成功后才能保存图片哦'
              })
            } else if(code == 202) {
              prompt.showToast({
                message: '请刷新后重试'
              })
            } else if(code == 300) {
              prompt.showToast({
                message: 'I/O错误,图片保存失败'
              })
            }
          }
        })
      },
      fail: (data, code) => {
        if(code == 1000) {
          prompt.showToast({
            message: '图片下载失败'
          })
        } else if(code == 1001) {
          prompt.showToast({
            message: '下载任务不存在'
          })
        }
      }
    })
  },
  fail: () => {

  }
})
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值