如何通过文件选择器获取到的uri来获取文件名称
·
1 关键字
filePicker;mediaLibrary;fileAssets;获取文件名称
2 需求背景
在使用filePicker选择文件时,得到的只有选中文件的uri;而业务需求是同时需要获取文件名称,此时则需要搭配mediaLibrary来获取文件名称。
3 实现步骤
- 1、通过filePicker选择文件,得到选中文件的uri;
// 以documentPicker为例 let documentPicker = new picker.DocumentViewPicker(); documentPicker.select() .then((values) => { // 将选中的第一个文件作为示例 this.selectedUri = values[0]; console.log(`myLog documentPicker select success, selectedUri: ${JSON.stringify(values)}`); }) .catch((err) => { console.log(`myLog documentPicker select fail, err: ${JSON.stringify(err)}`); })
-
2、获取mediaLibrary实例,建议在定义变量时获取;
private library: mediaLibrary.MediaLibrary = mediaLibrary.getMediaLibrary(getContext());
-
3、通过mediaLibrary实例获取fetchFileResult;注:调用此方法需要ohos.permission.READ_MEDIA权限(授权类型为用户授权)
this.library.getFileAssets({ selections: mediaLibrary.FileKey.MEDIA_TYPE + '= ?', // 以图片类型为例,不同文件类型选择不同的MediaType selectionArgs: [mediaLibrary.MediaType.IMAGE.toString()] }) .then((fetchFileResult) => { this.fetchFileResult = fetchFileResult; console.log(`myLog getFileAssets success`); }) .catch((err) => { console.log(`myLog getFileAssets fail, err: ${JSON.stringify(err)}`); })
- 4、通过fetchFileResult获取所有的fileAssets;
this.fetchFileResult.getAllObject() .then((fileAssets) => { this.fileAssets = fileAssets; console.log(`myLog getAllObject success, fileAsset count: ${fileAssets.length}`); }) .catch((err) => { console.log(`myLog getAllObject fail, err: ${JSON.stringify(err)}`); })
- 5、通过遍历获取到的所有文件,对比文件的uri,得到选中的文件名称
for(let i = 0; i < this.fileAssets.length; i++){ if(this.selectedUri === this.fileAssets[i].uri){ console.log(`myLog selected file name: ${JSON.stringify(this.fileAssets[i].displayName)}`); } }
更多推荐
所有评论(0)