From 9bd88dc0298b07a116083f0b501bc544861a1c8a Mon Sep 17 00:00:00 2001 From: huweiqi Date: Wed, 31 May 2023 08:23:07 +0000 Subject: [PATCH] fixed f6e1c2f from https://gitee.com/weiqi-hu/docs/pulls/19004 picker.md modify Signed-off-by: huweiqi Change-Id: I2f02e9ede5cf0844f11562632abedc296d0fdf54 --- .../file-management/save-user-file.md | 66 +++++++------ .../file-management/select-user-file.md | 99 ++++++++++--------- 2 files changed, 87 insertions(+), 78 deletions(-) diff --git a/zh-cn/application-dev/file-management/save-user-file.md b/zh-cn/application-dev/file-management/save-user-file.md index ea8bdb6a0d..8f8353651f 100644 --- a/zh-cn/application-dev/file-management/save-user-file.md +++ b/zh-cn/application-dev/file-management/save-user-file.md @@ -7,10 +7,11 @@ ## 保存图片或视频类文件 -1. 导入选择器模块。 +1. 导入选择器模块和文件管理模块。 ```ts import picker from '@ohos.file.picker'; + import fs from '@ohos.file.fs'; ``` 2. 创建图库保存选项实例。 @@ -20,23 +21,25 @@ photoSaveOptions.newFileNames = ["PhotoViewPicker01.jpg"]; // 保存文件名(可选) ``` -3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。 - 用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。 +3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。 + +
save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。 ```ts - let uri = null; + let URI = null; const photoViewPicker = new picker.PhotoViewPicker(); photoViewPicker.save(photoSaveOptions).then((photoSaveResult) => { - uri = photoSaveResult[0]; + URI = photoSaveResult[0]; + console.info('photoViewPicker.save to file succeed and URI is:' + URI); }).catch((err) => { - console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`); }) ``` -4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。 +4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); + let file = fs.openSync(URI, fs.OpenMode.READ_WRITE); console.info('file fd: ' + file.fd); ``` @@ -50,10 +53,11 @@ ## 保存文档类文件 -1. 导入选择器模块。 +1. 导入选择器模块和文件管理模块。 ```ts import picker from '@ohos.file.picker'; + import fs from '@ohos.file.fs'; ``` 2. 创建文档保存选项实例。 @@ -63,27 +67,25 @@ documentSaveOptions.newFileNames = ["DocumentViewPicker01.txt"]; // 保存文件名(可选) ``` -3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。 - 用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。 - - > **说明:** - > - > 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。 +3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。 + +
save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。 ```ts - let uri = null; + let URI = null; const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例 documentViewPicker.save(documentSaveOptions).then((documentSaveResult) => { - uri = documentSaveResult[0]; + URI = documentSaveResult[0]; + console.info('documentViewPicker.save to file succeed and URI is:' + URI); }).catch((err) => { - console.error(`Invoke documentPicker.save failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`); }) ``` -4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。 +4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); + let file = fs.openSync(URI, fs.OpenMode.READ_WRITE); console.info('file fd: ' + file.fd); ``` @@ -97,10 +99,11 @@ ## 保存音频类文件 -1. 导入选择器模块。 +1. 导入选择器模块和文件管理模块。 ```ts import picker from '@ohos.file.picker'; + import fs from '@ohos.file.fs'; ``` 2. 创建音频保存选项实例。 @@ -110,26 +113,25 @@ audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3']; // 保存文件名(可选) ``` -3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。 - 用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。 - > **说明:** - > - > 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。 - +3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。 + +
save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。 + ```ts - let uri = null; + let URI = null; const audioViewPicker = new picker.AudioViewPicker(); audioViewPicker.save(audioSaveOptions).then((audioSelectResult) => { - uri = audioSelectResult[0]; + URI = audioSelectResult[0]; + console.info('audioViewPicker.save to file succeed and URI is:' + URI); }).catch((err) => { - console.error(`Invoke audioPicker.select failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke audioViewPicker.save failed, code is ${err.code}, message is ${err.message}`); }) ``` -4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。 +4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_WRITE。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); + let file = fs.openSync(URI, fs.OpenMode.READ_WRITE); console.info('file fd: ' + file.fd); ``` diff --git a/zh-cn/application-dev/file-management/select-user-file.md b/zh-cn/application-dev/file-management/select-user-file.md index 4e42bc7aa0..97f507b6d0 100644 --- a/zh-cn/application-dev/file-management/select-user-file.md +++ b/zh-cn/application-dev/file-management/select-user-file.md @@ -12,10 +12,11 @@ ## 选择图片或视频类文件 -1. 导入选择器模块。 +1. 导入选择器模块和文件管理模块。 ```ts import picker from '@ohos.file.picker'; + import fs from '@ohos.file.fs'; ``` 2. 创建图库选择选项实例。 @@ -32,41 +33,44 @@ photoSelectOptions.maxSelectNumber = 5; // 选择媒体文件的最大数目 ``` -4. 创建图库选择器实例,调用[select()](../reference/apis/js-apis-file-picker.md#select)接口拉起FilePicker界面进行文件选择。 - - 文件选择成功后,返回[PhotoSelectResult](../reference/apis/js-apis-file-picker.md#photoselectresult)结果集,可以根据结果集中URI进行文件读取等操作。 +4. 创建图库选择器实例,调用[select()](../reference/apis/js-apis-file-picker.md#select)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回[PhotoSelectResult](../reference/apis/js-apis-file-picker.md#photoselectresult)结果集。 + +
select返回的URI权限是只读权限,可以根据结果集中URI进行读取文件数据操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。 ```ts - let uri = null; - const photoPicker = new picker.PhotoViewPicker(); - photoPicker.select(photoSelectOptions).then((photoSelectResult) => { - uri = photoSelectResult.photoUris[0]; + let URI = null; + const photoViewPicker = new picker.PhotoViewPicker(); + photoViewPicker.select(photoSelectOptions).then((photoSelectResult) => { + URI = photoSelectResult.photoUris[0]; + console.info('photoViewPicker.select to file succeed and URI is:' + URI); }).catch((err) => { - console.error(`Invoke photoPicker.select failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) ``` -5. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。 +5. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); + let file = fs.openSync(URI, fs.OpenMode.READ_ONLY); console.info('file fd: ' + file.fd); ``` -6. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。 +6. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口读取这个文件内的数据,读取完成后关闭fd。 ```ts - let writeLen = fs.writeSync(file.fd, 'hello, world'); - console.info('write data to file succeed and size is:' + writeLen); + let buffer = new ArrayBuffer(4096); + let readLen = fs.readSync(file.fd, buffer); + console.info('readSync data to file succeed and buffer size is:' + readLen); fs.closeSync(file); ``` ## 选择文档类文件 -1. 导入选择器模块。 +1. 导入选择器模块和文件管理模块。 ```ts import picker from '@ohos.file.picker'; + import fs from '@ohos.file.fs'; ``` 2. 创建文档选择选项实例。 @@ -75,23 +79,24 @@ const documentSelectOptions = new picker.DocumentSelectOptions(); ``` -3. 创建文档选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-3)接口拉起FilePicker界面进行文件选择。 - - 文件选择成功后,返回被选中文档的URI结果集。开发者可以根据结果集中URI做进一步的处理。 - - 例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI获取部分文件属性信息,比如文件大小、访问时间、修改时间等。如有获取文件名称需求,请暂时使用[startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md)获取。 +3. 创建文档选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-3)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回被选中文档的URI结果集。 + +
select返回的URI权限是只读权限,开发者可以根据结果集中URI做进一步的处理。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。 + +
例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI获取部分文件属性信息,比如文件大小、访问时间、修改时间等。如有获取文件名称需求,请暂时使用[startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md)获取。 > **说明:** > > 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。 ```ts - let uri = null; + let URI = null; const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例 documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => { - uri = documentSelectResult[0]; + URI = documentSelectResult[0]; + console.info('documentViewPicker.select to file succeed and URI is:' + URI); }).catch((err) => { - console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) ``` @@ -109,7 +114,7 @@ try { let result = await context.startAbilityForResult(config, {windowMode: 1}); if (result.resultCode !== 0) { - console.error(`DocumentPicker.select failed, code is ${result.resultCode}, message is ${result.want.parameters.message}`); + console.error(`documentViewPicker.select failed, code is ${result.resultCode}, message is ${result.want.parameters.message}`); return; } // 获取到文档文件的URI @@ -117,34 +122,34 @@ // 获取到文档文件的文件名称 let file_name_list = result.want.parameters.file_name_list; } catch (err) { - console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`); } ``` -4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。 +4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); + let file = fs.openSync(URI, fs.OpenMode.READ_ONLY); console.info('file fd: ' + file.fd); ``` -5. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口对这个文件进行读取数据,读取完成后关闭fd。 +5. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口读取这个文件内的数据,读取完成后关闭fd。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); - let buf = new ArrayBuffer(4096); - let num = fs.readSync(file.fd, buf); - console.info('read data to file succeed and size is:' + num); + let buffer = new ArrayBuffer(4096); + let readLen = fs.readSync(file.fd, buffer); + console.info('readSync data to file succeed and buffer size is:' + readLen); fs.closeSync(file); ``` ## 选择音频类文件 -1. 导入选择器模块。 +1. 导入选择器模块和文件管理模块。 ```ts import picker from '@ohos.file.picker'; + import fs from '@ohos.file.fs'; ``` 2. 创建音频选择选项实例。 @@ -153,37 +158,39 @@ const audioSelectOptions = new picker.AudioSelectOptions(); ``` -3. 创建音频选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-6)接口拉起FilePicker界面进行文件选择。 - - 文件选择成功后,返回被选中音频的URI结果集。开发者可以根据结果集中URI做进一步的处理。 - - 例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI拿到音频资源的文件句柄(FD),再配合媒体服务实现音频播放的开发,具体请参考[音频播放开发指导](../media/audio-playback-overview.md)。 +3. 创建音频选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-6)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回被选中音频的URI结果集。 + +
select返回的URI权限是只读权限,开发者可以根据结果集中URI做读取文件数据操作。注意不能在 picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。 + +
例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI拿到音频资源的文件句柄(FD),再配合媒体服务实现音频播放的开发,具体请参考[音频播放开发指导](../media/audio-playback-overview.md)。 > **说明:** > > 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。 ```ts - let uri = null; + let URI = null; const audioViewPicker = new picker.AudioViewPicker(); audioViewPicker.select(audioSelectOptions).then(audioSelectResult => { - uri = audioSelectOptions[0]; + URI = audioSelectOptions[0]; + console.info('audioViewPicker.select to file succeed and URI is:' + URI); }).catch((err) => { - console.error(`Invoke audioPicker.select failed, code is ${err.code}, message is ${err.message}`); + console.error(`Invoke audioViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) ``` -4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。 +4. 待界面从FilePicker返回后,再通过类似一个按钮调用其他函数,使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过URI打开这个文件得到fd。这里需要注意接口权限参数是fs.OpenMode.READ_ONLY。 ```ts - let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); + let file = fs.openSync(URI, fs.OpenMode.READ_ONLY); console.info('file fd: ' + file.fd); ``` -5. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。 +5. 通过fd使用[fs.readSync](../reference/apis/js-apis-file-fs.md#readsync)接口读取这个文件内的数据,读取完成后关闭fd。 ```ts - let writeLen = fs.writeSync(file.fd, 'hello, world'); - console.info('write data to file succeed and size is:' + writeLen); + let buffer = new ArrayBuffer(4096); + let readLen = fs.readSync(file.fd, buffer); + console.info('readSync data to file succeed and buffer size is:' + readLen); fs.closeSync(file); ``` -- GitLab