HarmonyOS 使用DocumentViewPicker获取download目录后写入文件失败?

const document = new picker.DocumentSaveOptions();
document.pickerMode = picker.DocumentPickerMode.DOWNLOAD;
let result = await new picker.DocumentViewPicker().save(document);
for (const dir of result) {
  let filepath = dir + "/logo.zip";
  log("writeFile", filepath, ab.byteLength)
  let file = await fs.open(filepath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE | fs.OpenMode.TRUNC)
  await fs.write(file.fd, ab).finally(() => fs.close(file))
}

打印出了

writeFile file://docs/storage/Users/currentUser/Download/xxx/xxx.png 1544648

随后写入文件报错

{"code":13900001}

尝试在SaveButton和DownloadFileButton的onClick回调中写入都报这个错误。

阅读 593
1 个回答

保存沙箱下文件到公共目录参考示例:

writeFile file:{
  let documentSaveOptions = new picker.DocumentSaveOptions();
  documentSaveOptions.pickerMode = picker.DocumentPickerMode.DOWNLOAD
  documentSaveOptions.newFileNames = ['hilog.zip'];
  let documentPicker = new picker.DocumentViewPicker(context);
  documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
    let srcPath = getContext().resourceDir + '/hilog.zip';
    let uriString = new fileUri.FileUri(documentSaveResult[0])
    let dstPath = uriString.path + "/hilog.zip";
    fs.copyFileSync(srcPath, dstPath);
    console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
  }).catch((err: BusinessError) => {
    console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
  });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进