downFile.ets 1.5 KB
import fs from '@ohos.file.fs';
import { http } from '@kit.NetworkKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { promptAction } from '@kit.ArkUI';
let context = getContext();
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);

export async function downFile(downPath: string, type: string) {
  //获取相册管理模块的实例,用于访问和修改相册中的媒体文件 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
  // onClick触发后10秒内通过createAsset接口创建图片文件,10秒后createAsset权限收回
  let uri: string
  if(type == 'mp4') {
    uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.VIDEO, type);
  } else {
    uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, type);
  }
  // 创建媒体文件
  console.info('createAsset successfully, uri: ' + uri);
  let file = fs.openSync(uri, fs.OpenMode.READ_WRITE || fs.OpenMode.CREATE);
  let totalSize = 0;
  let httpRequest = http.createHttp();
  httpRequest.on("dataReceive", (data: ArrayBuffer) => {
    let writeLen = fs.writeSync(file.fd, data); totalSize = totalSize + writeLen; });
  httpRequest.requestInStream(downPath, { method: http.RequestMethod.GET, connectTimeout: 3000, }, httpCode => {
      console.info('requestInStream HTTP CODE is', httpCode) })
  httpRequest.on("dataEnd", () => {
    fs.close(file);
    promptAction.showToast({ message: `下载结束,并保存至相册,大小为:${totalSize}字节` }) })
}