代码如下:
let imageUrl = this.imageList[this.curIndex].url;
if (!imageUrl) {
return
}
http.createHttp().request(imageUrl)
.then(async (data: http.HttpResponse) => {
try {
let imageData = data.result as ArrayBuffer
let helper = photoAccessHelper.getPhotoAccessHelper(GlobalContext.getContext());
helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpeg')
.then((uri) => {
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
fs.writeSync(file.fd, imageData);
fs.closeSync(file.fd);
promptAction.showToast({ message: ' 图片保存成功!' })
})
.catch((error: BusinessError) => {
promptAction.showToast({ message: ' 图片保存失败!' })
});
}
catch (e) {
promptAction.showToast({ message: ' 图片保存失败!' })
}
})
.catch((error: Error) => {
promptAction.showToast({ message: ' 图片保存失败!' })
})
http.createHttp方式请求数据流大小存在5M限制,当前使用动图超过当前大小限制导致报错,需要下载数据超过5m时可使用http.requestInstream替换,使用可参考文档中样例方式:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http-V5\#requestinstream10