1# 文件子系统ChangeLog 2 3## cl.file.1 userFileManager FileAsset属性变更 4 5[userFileManager.FileAsset](../../../application-dev/reference/apis/js-apis-userFileManager.md#fileasset)属性变更。 6 7变更前uri的格式为: 8 9'file://media/\<file_type\>/\<file_id\>/?networkid=xxx' 10 11变更后uri的格式为: 12 13'file://media/Photo/\<id\>/IMG_datetime_0001/displayName.jpg' 14 15**变更影响** 16 17基于此前版本开发的应用,请排查是否对媒体库uri有依赖或者解析,如有依赖请尽快进行适配修改。file_id并不保证唯一,请不要对id进行解析,能使用id的地方都可以使用uri进行代替。 18 19**关键接口/组件变更** 20 21| 模块名 | 方法/属性/枚举/常量 | 变更类型 | 22| ------------------------- | ------------------------------------------------------------ | -------- | 23| userFileManager | **interface** FileAsset | 属性变更 | 24 25**适配指导** 26 27在API version 10上,对公共文件uri格式进行调整,实现通过uri获取文件名等文件基础信息。新的格式将会导致对uri进行解析的方式会存在无法达到预期效果的情况,例如对uri为 'file://media/image/8'进行解析获取uri结尾的id为8,采用变更后的格式有可能得到的是文件的displayName。推荐直接使用uri进行获取文件资源。 28 29**正确示例:** 30 31```js 32import userFileManager from '@ohos.filemanagement.userFileManager'; 33import dataSharePredicates from '@ohos.data.dataSharePredicates'; 34 35async function example() { 36 let context = getContext(this); 37 let mgr = userFileManager.getUserFileMgr(context); 38 let predicates = new dataSharePredicates.DataSharePredicates(); 39 let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。 40 predicates.equalTo('uri', uri); 41 let fetchOptions = { 42 fetchColumns: ['uri'], 43 predicates: predicates 44 }; 45 46 mgr.getPhotoAssets(fetchOptions, async (err, fetchResult) => { 47 if (fetchResult != undefined) { 48 console.info('fetchResult success'); 49 let fileAsset = await fetchResult.getFirstObject(); 50 if (fileAsset != undefined) { 51 console.info('fileAsset.displayName : ' + fileAsset.displayName); 52 } 53 } else { 54 console.error('fetchResult fail' + err); 55 } 56 }); 57} 58``` 59 60## cl.file.2 photoAccessHelper PhotoAsset属性变更 61 62[photoAccessHelper.PhotoAsset](../../../application-dev/reference/apis/js-apis-photoAccessHelper.md#photoasset)属性变更。 63 64变更前uri的格式为: 65 66'file://media/\<file_type\>/\<file_id\>/?networkid=xxx' 67 68变更后uri的格式为: 69 70'file://media/Photo/\<id\>/IMG_datetime_0001/displayName.jpg' 71 72**变更影响** 73 74基于此前版本开发的应用,请排查是否对媒体库uri有依赖或者解析,如有依赖请尽快进行适配修改。file_id并不保证唯一,请不要对id进行解析,能使用id的地方都可以使用uri进行代替。 75 76**关键接口/组件变更** 77 78| 模块名 | 方法/属性/枚举/常量 | 变更类型 | 79| ------------------------- | ------------------------------------------------------------ | -------- | 80| photoAccessHelper | **interface** PhotoAsset | 属性变更 | 81 82**适配指导** 83 84在API version 10上,对公共文件uri格式进行调整,实现通过uri获取文件名等文件基础信息。新的格式将会导致对uri进行解析的方式会存在无法达到预期效果的情况,例如对uri为 'file://media/image/8'进行解析获取uri结尾的id为8,采用变更后的格式有可能得到的是文件的displayName。推荐直接使用uri进行获取文件资源。 85 86**正确示例:** 87 88```js 89import photoAccessHelper from '@ohos.file.photoAccessHelper'; 90import dataSharePredicates from '@ohos.data.dataSharePredicates'; 91 92async function example() { 93 let context = getContext(this); 94 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 95 let predicates = new dataSharePredicates.DataSharePredicates(); 96 let uri = 'file://media/Photo/1/IMG_datetime_0001/displayName.jpg' // 需保证此uri已存在。 97 predicates.equalTo('uri', uri); 98 let fetchOptions = { 99 fetchColumns: ['uri'], 100 predicates: predicates 101 }; 102 103 phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 104 if (fetchResult != undefined) { 105 console.info('fetchResult success'); 106 let photoAsset = await fetchResult.getFirstObject(); 107 if (photoAsset != undefined) { 108 console.info('photoAsset.displayName : ' + photoAsset.displayName); 109 } 110 } else { 111 console.error('fetchResult fail' + err); 112 } 113 }); 114} 115``` 116