HarmonyOS 怎样使用DocumentViewPicker将文件下载到“文件”里

代码见截图;代码里的url字段是文件下载到沙盒后的路径,现在下载到“文件”里的文件是0kb;可以提供一个demo吗

HarmonyOS 怎样使用DocumentViewPicker将文件下载到“文件”里 -鸿蒙开发者社区

HarmonyOS
2024-12-23 15:06:06
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

核心代码如下:

downloadSave() {
  let context = getContext(this) as common.UIAbilityContext;
  let filePath = context.filesDir+"/test5.xlsx";
  let url ="在线表格文件链接名.xlsx"
  try {
    request.downloadFile(context, {
      url : url,
      filePath: filePath
    }).then((data:request.DownloadTask)=>{
      let downloadTask: request.DownloadTask = data;
      downloadTask.on('complete',()=>{
        console.info('download complete');
        let file = fs.openSync(filePath,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
        let arrayBuffer = new ArrayBuffer(4096000);
        let readLen = fs.readSync(file.fd, arrayBuffer);
        let buf = buffer.from(arrayBuffer,0,readLen);
        console.info(`content of File: ${buf.toString()}`);
        let writeLen = fs.writeSync(file.fd, arrayBuffer);
        fs.closeSync(file);
        // 创建文件管理器选项实例
        const documentSaveOptions = new picker.DocumentSaveOptions();
        documentSaveOptions.newFileNames = ["1.xlsx"]; // 保存文件名(可选)
        documentSaveOptions.fileSuffixChoices = ['xlsx']; // 保存文件excel类型(可选)
        let uris: Array<string> = [];
        const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
        documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
          uris = documentSaveResult;
          console.info('documentViewPicker.save to file succeed and uris are:' + uris);

          let uri = uris[0];
          let file2 = fs.openSync(uri,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
          let writeLen2 = fs.writeSync(file2.fd, arrayBuffer);
          fs.closeSync(file2);
        }).catch((err: BusinessError) => {
          console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`);
        })
      })

      let failCallback = () => {
        console.info('Download task fail.');
      };
      downloadTask.on('fail', failCallback);

    }).catch((err:BusinessError)=>{
      console.error(`downLoadFileTask failed, code is ${err.code}, message is ${err.message}`);
    });
  } catch (error){
    console.error(`downLoadFileTask failed, code is ${error.code}, message is ${error.message}`);
  }
}
分享
微博
QQ
微信
回复
2024-12-23 19:22:37
相关问题
HarmonyOS 下载到本地文件的预览问题
537浏览 • 1回复 待解决
HarmonyOS DocumentViewPicker选择文件问题
432浏览 • 1回复 待解决
如何使用接口下载文件
2467浏览 • 1回复 待解决
HarmonyOS 使用http下载文件异常
532浏览 • 1回复 待解决
HarmonyOS 文件下载,预览
444浏览 • 1回复 待解决
使用request下载文件的方式
1272浏览 • 1回复 待解决
HarmonyOS 图片文件下载
562浏览 • 1回复 待解决
HarmonyOS 文件下载问题
436浏览 • 1回复 待解决
HarmonyOS 文件下载相关
416浏览 • 1回复 待解决