HarmonyOS 文件下载saveas希望支持下绝对路径

项目很多逻辑路径是在flutter端初始化的,包括files和cache及其他目录,传到HarmonyO端的文件全路径比如:data/storage/el2/base/files/flutter/Focus/yXu197AmRxN7W8yguViaz/nlaAEGuL8g6irJaGQ57lx/DownloadFiles/document/628764a24/应用HarmonyO化解决方案一指禅-v2.1-水印.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()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

绝对路径为什么不行呢?或者如何将绝对路径转化为相对路径呢?

HarmonyOS
2024-09-09 10:38:05
954浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

1. 出于安全考虑,应用无法直接读取系统路径,加载本地资源仅支持沙箱路径。

2. 若使用系统公共目录文件,需将文件拷贝至沙箱目录下。请参考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); 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
分享
微博
QQ
微信
回复
2024-09-09 15:37:53


相关问题
如何获取文件绝对路径
2918浏览 • 1回复 待解决
HarmonyOS 获取资源文件绝对路径地址
1056浏览 • 1回复 待解决
HarmonyOS import动态导入绝对路径
1215浏览 • 1回复 待解决
HarmonyOS APP开发如何访问绝对路径
664浏览 • 1回复 待解决
HarmonyOS中如何获取资源的绝对路径
1246浏览 • 1回复 待解决
HarmonyOS 获取资源目录下的绝对路径
846浏览 • 1回复 待解决
支持下载和安装三方App吗?
1436浏览 • 1回复 待解决
HarmonyOS 预览沙箱路径文件失败
655浏览 • 1回复 待解决
HarmonyOS import相对路径有无替代方案
773浏览 • 1回复 待解决
是否支持iframe下载文件
1512浏览 • 1回复 待解决