photoAccessHelper
import { fileIo } from '@kit.CoreFileKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { bundleManager } from '@kit.AbilityKit';
export function getSandboxFiles(path: string) {
return `${getContext().filesDir}/${path}`;
}
export function getSandboxCache(path: string) {
return `${getContext().cacheDir}/${path}`;
}
export function addFileFolder(path: string) {
fileIo.access(path, (err, res: boolean) => {
if (!res) {
fileIo.mkdirSync(path);
}
})
}
export function copyFileSync(srcPath: string, destPath: string) {
const srcFile = fileIo.openSync(srcPath, fileIo.OpenMode.READ_ONLY);
const destFile = fileIo.openSync(destPath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
fileIo.copyFileSync(srcFile.fd, destFile.fd);
fileIo.closeSync(srcFile);
fileIo.closeSync(destFile);
}
export async function selectImages(maxNumber: number = 1, where: string = 'files'): Promise<string[]> {
if (where === 'files') {
addFileFolder(getSandboxFiles('images'))
}
const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
photoSelectOptions.maxSelectNumber = maxNumber;
const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
return photoViewPicker.select(photoSelectOptions).then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
return photoSelectResult.photoUris.map(filePath => {
const imageName = filePath.split('/').pop() || '';
let sandboxPath = ''
if (where === 'cache') {
sandboxPath = getSandboxCache(imageName);
copyFileSync(filePath, sandboxPath);
return sandboxPath;
} else {
sandboxPath = getSandboxFiles('images/' + imageName);
copyFileSync(filePath, sandboxPath);
const bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION;
let bundleName = bundleManager.getBundleInfoForSelfSync(bundleFlags).name;
return `file://${bundleName}${sandboxPath}`;
}
});
})
}
使用
import { selectImages } from '../../utils/file';
@State tagImage: string = ''
.onClick(() => {
selectImages().then((res: string[]) => {
if(res.length) {
this.tagImage = res[0]
}
})
})
Image(tagImage)
.width(50)
.height(50)
.borderRadius(25);