HarmonyOS 鸿蒙Next 文件下载saveas希望支持下绝对路径
HarmonyOS 鸿蒙Next 文件下载saveas希望支持下绝对路径
Flutter鸿蒙混合项目很多逻辑路径是在flutter端初始化的,包括files和cache及其他目录,传到鸿蒙端的文件全路径比如:data/storage/el2/base/files/flutter/Focus/xxxx/xxxx/DownloadFiles/document/628764a24/应用鸿蒙化解决方案.pdf,这个路径下载就会报错,需要改成相对路径才行,这个有点别扭,代码如下:
let path = downloadInfo.savedDir + “/” + downloadInfo.fileName
let downloadConfig: request.agent.Config = {
url: downloadInfo.url,
action: request.agent.Action.DOWNLOAD,
method: ‘GET’,
title: ‘download’,
mode: request.agent.Mode.BACKGROUND,
retry: true,
network: request.agent.Network.ANY,
saveas: path, //./${downloadInfo.fileName}
,
overwrite: false,
headers: record,
gauge:false
}
let downloadTask: request.agent.Task = await request.agent.create(context, downloadConfig)
await downloadTask.start()
问题:
绝对路径为啥不行呢?或者如何将绝对路径转化为相对路径呢?
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next 文件下载saveas希望支持下绝对路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
1. 出于安全考虑,应用无法直接读取系统路径,加载本地资源仅支持沙箱路径
2. 若使用系统公共目录文件,需将文件拷贝至沙箱目录下
沙箱路径:应用沙箱目录-应用文件-Core File Kit(文件基础服务)-应用框架 - 华为HarmonyOS开发者 (huawei.com)
请参考Demo:
pickerPhoto() {
try {
let options = new picker.PhotoSelectOptions();
options.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
options.maxSelectNumber = 1;
let p = new picker.PhotoViewPicker();
p.select(options).then((res:picker.PhotoSelectResult) => {
console.info("txy photo is uri" + res.photoUris[0])
this.saveFile(res.photoUris[0]);
})
} catch (e) {
console.error("txy select tailed..")
}
}
async saveFile(uri: string) {
// 将公共目录的文件,拷贝至沙箱路径
let destDist = getContext(this).cacheDir + "/test.png";
let src = fs.openSync(uri, fs.OpenMode.READ_ONLY);
let dst = fs.openSync(destDist, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
fs.copyFileSync(src.fd, dst.fd);
}
更多关于HarmonyOS 鸿蒙Next 文件下载saveas希望支持下绝对路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对您提出的HarmonyOS鸿蒙Next文件下载功能中希望支持绝对路径的saveas
需求,以下是一些专业说明:
在HarmonyOS的应用开发框架中,文件操作通常遵循系统的权限管理和沙盒模型。对于文件下载并保存为绝对路径的功能,需要确保应用具备相应的文件系统权限,并且目标路径在应用的可访问范围内。
若您希望在saveas
操作中支持绝对路径,建议首先检查并申请必要的文件系统权限。在HarmonyOS中,这通常涉及在manifest.json
文件中声明相关权限,并在运行时请求用户授权。
此外,由于绝对路径可能涉及系统敏感区域或其他应用的数据目录,因此应谨慎处理路径输入,避免潜在的安全风险。建议采用系统提供的API来构建和验证路径,确保路径的有效性和安全性。
若您的应用确实需要访问特定绝对路径,且该路径不在应用的沙盒内,可能需要通过特定的系统接口或与其他应用进行交互来实现。这通常涉及更复杂的权限管理和数据共享机制。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。