HarmonyOS 鸿蒙Next 相册路径要怎么变成绝对路径
HarmonyOS 鸿蒙Next 相册路径要怎么变成绝对路径
相册路径是file://media/Photo/2/IMG_1712804096_001/IMG_*****6.jpg,要怎么变成绝对路径。
业务代码逻辑里面从相册选择图片 上传到云端服务器
相册路径是file://media/Photo/2/IMG_1712804096_001/IMG_*****6.jpg,要怎么变成绝对路径。
获取uri直接用let stream = fs.createStreamSync(filePath, “r+”);会报错,文件不存在
更多关于HarmonyOS 鸿蒙Next 相册路径要怎么变成绝对路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
使用ohos.file.fs功能模块对文件/目录进行操作前,需要先获取其应用沙箱路径,
这边提供一个demo参考,看是否能解决你们的问题:
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
import fs from '[@ohos](/user/ohos).file.fs';
import picker from '[@ohos](/user/ohos).file.picker';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) message: string = 'Hello World';
async photoPick() {
try {
let PhotoSelectOptions = new picker.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 5;
let photoPicker = new picker.PhotoViewPicker();
photoPicker.select(PhotoSelectOptions)
.then(async (PhotoSelectResult: picker.PhotoSelectResult) => {
console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
let file1 = fs.openSync(PhotoSelectResult.photoUris[0])
fs.copyFileSync(file1.fd, `data/storage/el2/base/files/${file1.name}`)
let file2 = fs.openSync(`data/storage/el2/base/files/${file1.name}`, fs.OpenMode.READ_WRITE)
console.log(`file fd ==> ${file2.fd} | file path ==> ${file2.path}`)
// fs.closeSync(file1)
// fs.closeSync(file2)
}).catch((err: BusinessError) => {
console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
});
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
}
}
build() {
Row() {
Column() {
Button(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(async () => {
this.photoPick()
})
}
.width('100%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next 相册路径要怎么变成绝对路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,将相册路径转换为绝对路径的操作通常涉及文件系统API的调用。具体实现步骤如下:
-
获取相册内容URI:首先,通过相册应用或媒体库API获取到图片的URI。
-
使用ContentResolver解析URI:利用
ContentResolver
类,通过query
方法或openInputStream
方法配合Uri.parse
解析URI,获取到文件的真实路径。由于鸿蒙系统可能使用内容URI来抽象文件存储,直接解析URI为绝对路径需要利用系统提供的API进行转换。 -
构建绝对路径:解析URI后,通过URI的scheme、host、path等组成部分,结合系统根目录或特定存储区域路径,手动拼接成绝对路径。注意,这一步可能需要根据鸿蒙系统的具体文件系统结构进行调整。
示例代码(伪代码,因为具体实现依赖于鸿蒙API):
Uri uri = ...; // 获取到的图片URI
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(uri, ...); // 查询URI对应的文件信息
String absolutePath = ...; // 根据查询结果构建绝对路径
cursor.close();
注意:由于鸿蒙系统的API和文件系统结构可能与Android有所差异,上述方法需要根据鸿蒙系统的开发文档进行具体实现。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html