HarmonyOS 鸿蒙Next将相册照片上传到APP的沙箱
HarmonyOS 鸿蒙Next将相册照片上传到APP的沙箱
请问有没有将将手机相册图片上传到APP的沙箱,然后显示的的demo
可以参考以下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的沙箱,可以按照以下步骤操作:
-
选择图片:
- 使用
PhotoViewPicker
图库选择器对象来选择图片。 - 在选择之前,可以设置选择数量、资源类型等参数。
- 使用
-
获取图片URI:
- 选择图片后,会返回一个图片的URI。
-
将图片拷贝至沙箱目录:
- 利用获得的URI,通过文件访问API来访问实际的图片文件。
- 使用文件IO操作(如
fs.open
、fs.copyFile
等)将图片文件从原始位置复制到应用的沙箱目录(如cacheDir
)。
-
处理上传后的文件:
- 如果需要,可以对沙箱中的图片文件进行进一步处理,如压缩、格式转换等。
-
上传图片:
- 使用系统提供的
request.uploadFile
方法或其他网络请求库,将沙箱中的图片文件上传到服务器。
- 使用系统提供的
请注意,以上步骤可能涉及权限申请,确保你的APP已经获得了读写外部存储和访问网络的权限。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。