HarmonyOS 网络文件下载到公共目录示例

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

示例参考:

// 将网络资源文件下载到应用文件目录并读取一段内容
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';
import request from '@ohos.request';
import { BusinessError } from '@ohos.base';
import buffer from '@ohos.buffer';
import { picker } from '@kit.CoreFileKit';

@Entry
@Component
struct Index {
  build() {
    Button().onClick(() => {
      let context = getContext(this) as common.UIAbilityContext;
      let filePath = context.filesDir + "/test.xlsx";
      let url = "http://huawei.com"
      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}`);
      }
    })
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS关于下载到缓存目录的问题
606浏览 • 1回复 待解决
HarmonyOS获取公共下载目录api不可用
485浏览 • 1回复 待解决
java怎么读取公共目录下的文件
2306浏览 • 1回复 待解决
HarmonyOS 下载文件并保存到指定目录
96浏览 • 1回复 待解决
HarmonyOS 视频照片下载到沙箱并读取
20浏览 • 1回复 待解决
HarmonyOS 网络请求示例
43浏览 • 1回复 待解决