HarmonyOS 如何把网络链接的视频或者图片保存到本地相册?

官方文档https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-image-13-V5 是通过http请求获取图片并通过写入文件的形式保存到相册。

但是有两个问题:

第一个是request最多接收5M的数据,获取视频或者大的图片就没办法实现。

第二个问题是写入文件的write方法,需要传入arraybuffer,网络地址的url怎么转换成arraybuffer呢,或者直接传入url能保存成功吗

阅读 724
1 个回答

http.request几口上传最大可支持5m数据传递,如需要传递大于5m的数据可使用requestInstream采用流式接口能力,使用可参考如下:

let httpRequest = http.createHttp();
httpRequest.on("dataReceiveProgress", (data: http.DataReceiveProgressInfo) => {
  console.info("dataReceiveProgress:" + JSON.stringify(data));
});
httpRequest.on("dataReceive", (data: ArrayBuffer) => {
  console.info("dataReceive length: " + JSON.stringify(data.byteLength));
});
httpRequest.on("dataEnd", () => {
  console.info("Receive dataEnd !");
});
httpRequest.requestInStream("https://xx.jpg",
  (err: BusinessError, data: number) => {
    if (!err) {
      console.info("ResponseCode is " + JSON.stringify(data));
    } else {
      console.info("requestInStream ERROR : err = " + JSON.stringify(err));
    }
  })

推荐使用rcponDataReceive

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/remote-communication-rcp-V5\#section9264115918536

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进