HarmonyOS 文件下载以及查看预览demo?

如题:HarmonyOS 文件下载以及查看预览demo?

阅读 526
1 个回答

可以参考如下代码

文件下载

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']; // 保存文件类型(可选)
        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}`);
  }
}

文件预览demo 参考:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/webpdfviewer