HarmonyOS 鸿蒙Next 使用相机拍照或者相册选择照片并把照片上传到服务器

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用相机拍照或者相册选择照片并把照片上传到服务器

使用相机拍照或者相册选择照片并把照片上传到服务器 ,拍照和相册选择的照片路径是:file://media/Photo/4/xxx/xxx.jpg,但是我看文件上传的路径需要是internal://cache/xxx.jpg。

问题1:是不是文件上传必须是internal://cache/xxx.jpg 这样的路径

问题2:如何将拍照和相册的照片路径转化为internal://cache/xxx.jpg

2 回复

上传是需要用internal://cache/xxx.jpg 这个路径的

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-fileio-V5#ZH-CN_TOPIC_0000001930677245__fileiocopyfile

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-file-upload-download-0000001820880061

算了,上代码吧:

// pages/xxx.ets

import common from '@ohos.app.ability.common';

import fs from '@ohos.file.fs';

import request from '@ohos.request';

import { BusinessError } from '@ohos.base';

import { photoAccessHelper } from '@kit.MediaLibraryKit';

// 获取应用文件路径

let context = getContext(this) as common.UIAbilityContext;

let cacheDir = context.cacheDir;

@Entry

@Component

 struct Index12 {

  @State message: string = 'Hello World';

  build() {

    Row() {

      Column() {

        Text(this.message)

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

        Button('复制')

          .onClick(async () => {

            let uri = 'file://media/Photo/5/IMG_1718353652_004/IMG_004.jpg';

            let file = fs.openSync(uri)

            console.log('-------file',file.name)

            fs.copyFileSync(file.fd,cacheDir+"/IMG_003.jpg")

            fs.closeSync(file)

            let file1 = fs.openSync(cacheDir+"/IMG_003.jpg")

            console.log('-------file1',file1.name)

          })

      }

    }

  }

}

在HarmonyOS鸿蒙Next系统中,实现使用相机拍照或从相册选择照片并上传到服务器的功能,通常涉及以下几个步骤:

  1. 权限申请:首先,确保应用已获取相机、存储和网络访问权限。这些权限通常在应用的AndroidManifest.xml文件中声明,并在运行时动态申请。

  2. 拍照或选择照片:利用HarmonyOS提供的API,实现相机拍照或从相册选择照片的功能。拍照后,照片会保存在应用的私有存储中,或直接作为Bitmap对象处理。

  3. 照片处理:对照片进行必要的处理,如压缩、裁剪等,以适应上传需求。

  4. 上传照片:使用网络请求库(如OkHttp、Retrofit等)将照片上传到服务器。上传时,需将照片转换为合适的格式(如Base64编码或二进制文件),并设置正确的请求头。

  5. 错误处理:在上传过程中,需处理可能的网络错误、服务器错误等,确保用户体验。

确保所有步骤都正确实现,并遵循HarmonyOS的最佳实践。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部