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

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

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

HarmonyOS
3天前
浏览
收藏 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
微信
回复
3天前
相关问题
HarmonyOS 使用http下载文件异常
21浏览 • 1回复 待解决
如何使用接口下载文件
2124浏览 • 1回复 待解决
使用request下载文件的方式
827浏览 • 1回复 待解决
HarmonyOS 文件下载问题
46浏览 • 1回复 待解决
HarmonyOS 图片文件下载
117浏览 • 1回复 待解决
HarmonyOS 文件下载相关
50浏览 • 1回复 待解决
HarmonyOS下载文件报错
518浏览 • 1回复 待解决
HarmonyOS 文件下载保存问题
116浏览 • 1回复 待解决
HarmonyOS关于下载到缓存目录的问题
604浏览 • 1回复 待解决