HarmonyOS鸿蒙Next中如何下载图片类型的文件

HarmonyOS鸿蒙Next中如何下载图片类型的文件 需求是:

  1. 怎样判断是图片类型
  2. 下载图片类型的文件
3 回复

"H5图片保存到相册可以参考如下链接中的api,使用js调用原生方法: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-photoaccesshelper-V5#showassetscreationdialog12 具体参考代码如下:

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 { dataSharePredicates } from '@kit.ArkData';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { fileIo, fileUri } from '@kit.CoreFileKit';
import { http } from '@kit.NetworkKit';
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let filesDir = context.filesDir;
let url='https://img.alicdn.com/imgextra/i4/O1CN01aG16y424E11XsURUd_!!6000000007358-2-tps-206-240.png'
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  aboutToAppear(): void {
  }
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        }).onClick(() => {
          saveImage()
      })
    }
    .height('100%')
    .width('100%')
  }
}
async function saveImage() {
  console.info('ShowAssetsCreationDialogDemo.');
  let uri = fileUri.getUriFromPath(filesDir + '/1.jpg');
  try {
    // 获取需要保存到媒体库的位于应用沙箱的图片/视频uri
    let srcFileUris: Array<string> = [
      uri// 实际场景请使用真实的uri
    ];
    let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [
      {
        title: '1', // 可选
        fileNameExtension: 'jpg',
        photoType: photoAccessHelper.PhotoType.IMAGE,
        subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选
      }
    ];
    let desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs);
    console.info('showAssetsCreationDialog success, data is ' + desFileUris);
    http.createHttp().request(url,
      {
        method: http.RequestMethod.GET,
        connectTimeout: 60000,
        readTimeout: 60000
      },
      async (error: BusinessError, data: http.HttpResponse) => {
        if (error) {
          console.error(`http reqeust failed with. Code: ${error.code}, message: ${error.message}`);
        } else {
          if (http.ResponseCode.OK === data.responseCode) {
            let imageBuffer: ArrayBuffer = data.result as ArrayBuffer;
            try {
              let file = await fileIo.open(desFileUris[0], fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE)
              // 写入文件
              await fileIo.write(file.fd, imageBuffer);
              // 关闭文件
              await fileIo.close(file.fd);
            } catch (error) {
              console.error("error is " + JSON.stringify(error))
            }
          } else {
            console.error("error occurred when image downloaded!")
          }
        }
      })
  } catch (err) {
    console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message);
  }
}

更多关于HarmonyOS鸿蒙Next中如何下载图片类型的文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中下载图片类型的文件,可以使用Download模块。首先需要导入[@ohos](/user/ohos).net.download模块,然后通过download方法指定下载的URL和文件保存路径。具体步骤如下:

  1. 导入Download模块:

    import download from '[@ohos](/user/ohos).net.download';
    
  2. 设置下载的URL和保存路径:

    let url = 'https://example.com/image.jpg';
    let filePath = 'path/to/save/image.jpg';
    
  3. 调用download方法开始下载:

    download.downloadFile(url, filePath, (err, data) => {
        if (err) {
            console.error('Download failed:', err);
        } else {
            console.log('Download successful:', data);
        }
    });
    
  4. 处理下载结果。下载完成后,可以在回调函数中处理下载成功或失败的情况。

需要注意的是,下载文件需要网络权限,确保在config.json中配置了相应的权限:

{
    "module": {
        "requestPermissions": [
            {
                "name": "ohos.permission.INTERNET"
            }
        ]
    }
}

在HarmonyOS鸿蒙Next中下载图片类型文件,可以通过以下步骤实现:

  1. 使用HttpURLConnection:创建HttpURLConnection连接,设置请求方法为GET,获取输入流后保存为图片文件。

  2. 使用第三方库:如OkHttp,简化网络请求,下载图片并保存到指定路径。

  3. 使用DownloadManager:适用于系统级下载,通过创建下载请求并指定保存路径进行下载。

无论哪种方法,都需要确保应用具有网络权限和存储权限。

回到顶部