HarmonyOS 文件访问(fs)和webview加载本地资源是只支持沙箱路径吗,实际物理路径加载失败

开发过程调试,将文件通过Device File Browser,upLoad到/storage/media/100/local/data/com.zuoyebang.airclassdebug/file 目录下,

通过fs访问,提示list file failed with error message: No such file or directory, error code: 13900002;

通过webview加载,无error回调,白屏;

如何调试将文件上传到设备中,通过文件管理和webView访问?

HarmonyOS
2024-12-27 15:14:21
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Excelsior_abit

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

2、若使用系统公共目录文件,需将文件拷贝至沙箱目录下

沙箱路径:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-sandbox-directory-V5

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("tag photo is uri" + res.photoUris[0])
      this.saveFile(res.photoUris[0]);
    })
  } catch (e) {
    console.error("tag 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.
  • 22.
  • 23.
  • 24.
  • 25.
分享
微博
QQ
微信
回复
2024-12-27 17:51:48
相关问题
如何使用Image加载沙箱路径图片资源
2628浏览 • 2回复 待解决
HarmonyOS 加载RN沙盒路径资源文件
838浏览 • 1回复 待解决
HarmonyOS 预览沙箱路径下的文件失败
699浏览 • 1回复 待解决
HarmonyOS webview无法加载file协议路径
646浏览 • 1回复 待解决
HarmonyOS web加载沙箱文件失败
827浏览 • 1回复 待解决
沙箱路径文件怎么拿取?
2581浏览 • 1回复 待解决
HarmonyOS web从本地沙箱加载
932浏览 • 1回复 待解决
HarmonyOS webview如何加载沙箱html
1346浏览 • 1回复 待解决