HarmonyOS 鸿蒙Next将相册照片上传到APP的沙箱

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

HarmonyOS 鸿蒙Next将相册照片上传到APP的沙箱

请问有没有将将手机相册图片上传到APP的沙箱,然后显示的的demo

4 回复
思路就是拉起图库选择,通过Core File Kit 保存到沙箱

可以参考以下demo:

import picker from '[@ohos](/user/ohos).multimedia.cameraPicker'
import camera from '[@ohos](/user/ohos).multimedia.camera';
import common from '[@ohos](/user/ohos).app.ability.common';
import { BusinessError } from '[@ohos](/user/ohos).base';
import fileuri from '[@ohos](/user/ohos).file.fileuri';
import fs from '[@ohos](/user/ohos).file.fs';
import photoAccessHelper from '[@ohos](/user/ohos).file.photoAccessHelper';

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

class CameraPosition { cameraPosition: camera.CameraPosition saveUri: string

constructor(cameraPosition: camera.CameraPosition, saveUri: string) { this.cameraPosition = cameraPosition this.saveUri = saveUri } }

let pathDir = getContext().filesDir; console.log(‘保存路径为’+pathDir) let filePath = pathDir + ‘/picture.jpg’ fs.createRandomAccessFileSync(filePath, fs.OpenMode.CREATE); let uri = fileuri.getUriFromPath(filePath); async function photo() { try { let pickerProfile = new CameraPosition(camera.CameraPosition.CAMERAPOSITIONBACK, uri) let pickerResult: picker.PickerResult = await picker.pick(context, [picker.PickerMediaType.PHOTO, picker.PickerMediaType.VIDEO], pickerProfile); console.log(“the pick pickerResult is:” + JSON.stringify(pickerResult)); } catch (error) { let err = error as BusinessError; console.error(the pick call failed. error code: ${err.code}); } } async function picture() { let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; PhotoSelectOptions.maxSelectNumber = 1; let photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { let photouri: Array<string> = PhotoSelectResult.photoUris let file = fs.openSync(photouri[0], fs.OpenMode.READ_ONLY) let file2 = fs.openSync(pathDir+’/picture2.jpg’, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) fs.copyFileSync(file.fd, file2.fd) fs.closeSync(file); fs.closeSync(file2); }) }

@Entry @Component export struct Index { build() { Column() { Button(‘选择并保存’).onClick(() => { picture() }) Button(‘拍照并保存’).onClick(() => { photo() }) } } }

在HarmonyOS鸿蒙Next系统中,将相册照片上传到APP的沙箱,可以按照以下步骤操作:

  1. 选择图片

    • 使用PhotoViewPicker图库选择器对象来选择图片。
    • 在选择之前,可以设置选择数量、资源类型等参数。
  2. 获取图片URI

    • 选择图片后,会返回一个图片的URI。
  3. 将图片拷贝至沙箱目录

    • 利用获得的URI,通过文件访问API来访问实际的图片文件。
    • 使用文件IO操作(如fs.openfs.copyFile等)将图片文件从原始位置复制到应用的沙箱目录(如cacheDir)。
  4. 处理上传后的文件

    • 如果需要,可以对沙箱中的图片文件进行进一步处理,如压缩、格式转换等。
  5. 上传图片

    • 使用系统提供的request.uploadFile方法或其他网络请求库,将沙箱中的图片文件上传到服务器。

请注意,以上步骤可能涉及权限申请,确保你的APP已经获得了读写外部存储和访问网络的权限。

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

回到顶部