应用内下载PDF如何在HarmonyOS 自带"文件"APP中显示?

应用内下载PDF如何在HarmonyOS 自带"文件"APP中显示。目前存储在沙箱默认文件位置,手机无法看到下载文件。

阅读 434
1 个回答

可以使用FilePicker来实现文件保存到本地系统管理,FilePicker对应的官网链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/save-user-file-V5

问题处理思路:可以先通过picker获取到要选择或者保存文件的公共路径,然后通过fs.copyFile进行文件复制,核心示例代码如下:

save(){
  const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器保存选项实例
  documentSaveOptions.newFileNames = ["icon.txt"]; // 保存文件名(可选)

  const documentViewPicker = new picker.DocumentViewPicker;
  documentViewPicker.save(documentSaveOptions)
    .then(async (documentSaveResult) => {
      // 获取到到图片或者视频文件的URI后进行文件读取等操作
      let uri = documentSaveResult[0];
      console.info('pub uri:' + uri)
      // 沙箱路径文件
      let sanFile = fs.openSync(sanPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
      let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
      // 将文件从沙箱路拷贝到公共路径
      fs.copyFileSync(sanFile.fd, pubFile.fd)
    })
    .catch((err:Error) => {
      console.error(`Invoke documentPicker.select failed, message is ${err.message}`); })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏