#鸿蒙通关秘籍# 在HarmonyOS NEXT中,如何将下载的网络图片保存到手机相册或指定的用户目录?

HarmonyOS
2024-12-10 10:49:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
第一小趴菜

在module.json5文件中配置ohos.permission.WRITE_IMAGEVIDEO权限。示例如下:

{
 "name" : "ohos.permission.WRITE_IMAGEVIDEO",
 "reason": "$string:file_reason_desc",
 "usedScene": {
 "when":"always"
 }
}

然后就可以下方这样实现

`import { abilityAccessCtrl, common } from '@kit.AbilityKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import fs from '@ohos.file.fs';
import { http } from '@kit.NetworkKit';
import { promptAction } from '@kit.ArkUI';
@Entry
@Component struct Index {
@State message: string = 'Hello World'
private appContext: common.Context = getContext(this);
private atManager = abilityAccessCtrl.createAtManager();

build() {
 Row() {
 Column() {
 Text(this.message)
 .fontSize(50)
 .fontWeight(FontWeight.Bold)
 Button("保存图片")
 .margin({ top: 10 })
 .onClick(async (event: ClickEvent) => { 
 //申请权限并保存图片到图库
 try { 
 //申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO' 
 this.atManager.requestPermissionsFromUser(this.appContext, [ 'ohos.permission.WRITE_IMAGEVIDEO' ]).then(async () => { 
 //权限申请成功,保存到图库
 let context = getContext();
 //获取相册管理模块的实例,用于访问和修改相册中的媒体文件
 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 
 // onClick触发后10秒内通过createAsset接口创建图片文件,10秒后createAsset权限收回
 let uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');
 // 创建媒体文件
 console.info('createAsset successfully, uri: ' + uri);
 let file = fs.openSync(uri, fs.OpenMode.READ_WRITE || fs.OpenMode.CREATE);
 let totalSize = 0;
 let httpRequest = http.createHttp();
 httpRequest.on("dataReceive", (data: ArrayBuffer) => {
 let writeLen = fs.writeSync(file.fd, data); 
 totalSize = totalSize + writeLen; });
 httpRequest.requestInStream('https://developer.huawei.com/allianceCmsResource/resource/HUAWEI_Developer_VUE/images/homeNew/next- pc.png',
 { method: http.RequestMethod.GET, connectTimeout: 3000, }, httpCode => {
 console.info('requestInStream HTTP CODE is', httpCode) })
 httpRequest.on("dataEnd", () => { 
 fs.close(file);
 promptAction.showDialog({ title: "下载图片结束,并保存至相册", message: `图片大小:${totalSize}字节` }) }) }) 
 } catch (err) { 
 console.error(`requestPermissionsFromUser call Failed! error: ${err.code}`); } }) }
 .width('100%') 
 }
 .height('100%') 
 } 
}
分享
微博
QQ
微信
回复
2024-12-13 15:29:42
相关问题
HarmonyOS如何图片保存到手机相册
784浏览 • 1回复 待解决
HarmonyOS 如何将图片保存到相册
129浏览 • 1回复 待解决
HarmonyOS 保存网络图片到手机图库
177浏览 • 1回复 待解决
获取网络图片保存到相册
1802浏览 • 1回复 待解决
HarmonyOS 如何将base64图片保存到相册
1260浏览 • 1回复 待解决
HarmonyOS如何将PixelMap保存到相册
738浏览 • 1回复 待解决
有谁知道如何将图片保存到相册
1336浏览 • 1回复 待解决
如何保存网络图片相册
1002浏览 • 1回复 待解决
如何将视频保存到相册以及主机端
5832浏览 • 1回复 待解决
HarmonyOS 下载文件并保存到指定目录
298浏览 • 1回复 待解决