HarmonyOS 鸿蒙Next PhotoViewPicker获取到图片地址

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

HarmonyOS 鸿蒙Next PhotoViewPicker获取到图片地址

PhotoViewPicker获取到图片地址file://media/Photo/38/xxxxx/xxx.jpg,怎么转成可以上传的"internal"协议类型

2 回复

目前可以使用 fs.copyFile接口,来把文件拷贝到cache目录下再进行上传,

参考文档: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-V5/app-file-upload-download-V5

internal://cache路径是:/data/app/el2/100/base/您的包名/haps/entry/cache/

internal://cache 是用在上传下载中的,文件的本地存储路径,为应用的私有目录。

file:// 用于应用沙箱和媒体库中的文件,后续可通过使用@ohos.file.fs进行相关open、read、write等操作,实现文件分享。

参考:

// 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鸿蒙系统中,如果你正在使用PhotoViewPicker组件来获取图片,并希望获取到所选图片的地址,以下是一些基本的实现思路:

PhotoViewPicker组件主要用于图片的选择,它并不直接提供图片的文件路径,而是提供了所选图片的Uri(统一资源标识符)。你可以通过这个Uri来获取图片的位图(Bitmap)或者进一步处理。

  1. 获取Uri:在PhotoViewPicker的监听器中,你可以通过回调获取到所选图片的Uri

  2. 处理Uri

    • 如果你需要将图片保存到指定路径,可以使用ContentResolverInputStream来读取Uri对应的数据,然后将其写入文件。
    • 如果你只需要在应用中显示图片,可以直接使用UriImageView或其他图像显示组件。
  3. 注意权限:确保你的应用已经请求并获得了读取外部存储的权限(如果Uri指向的是外部存储)。

  4. 示例代码:由于篇幅限制,无法提供完整的代码示例,但你可以参考HarmonyOS的官方文档或开发者社区中的示例代码来实现这一功能。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部