未验证 提交 f823fbf5 编写于 作者: O openharmony_ci 提交者: Gitee

!19032 picker 开发指南增加权限描述和修改示例代码跳单3.2-release

Merge pull request !19032 from 胡伟奇/cherry-pick-1685583276
...@@ -7,10 +7,11 @@ ...@@ -7,10 +7,11 @@
## 保存图片或视频类文件 ## 保存图片或视频类文件
1. 导入选择器模块。 1. 导入选择器模块和文件管理模块
```ts ```ts
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
``` ```
2. 创建图库保存选项实例。 2. 创建图库保存选项实例。
...@@ -20,23 +21,25 @@ ...@@ -20,23 +21,25 @@
photoSaveOptions.newFileNames = ["PhotoViewPicker01.jpg"]; // 保存文件名(可选) photoSaveOptions.newFileNames = ["PhotoViewPicker01.jpg"]; // 保存文件名(可选)
``` ```
3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。 3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
</br>save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。
```ts ```ts
let uri = null; let URI = null;
const photoViewPicker = new picker.PhotoViewPicker(); const photoViewPicker = new picker.PhotoViewPicker();
photoViewPicker.save(photoSaveOptions).then((photoSaveResult) => { photoViewPicker.save(photoSaveOptions).then((photoSaveResult) => {
uri = photoSaveResult[0]; URI = photoSaveResult[0];
console.info('photoViewPicker.save to file succeed and URI is:' + URI);
}).catch((err) => { }).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 ```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); console.info('file fd: ' + file.fd);
``` ```
...@@ -50,10 +53,11 @@ ...@@ -50,10 +53,11 @@
## 保存文档类文件 ## 保存文档类文件
1. 导入选择器模块。 1. 导入选择器模块和文件管理模块
```ts ```ts
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
``` ```
2. 创建文档保存选项实例。 2. 创建文档保存选项实例。
...@@ -63,27 +67,25 @@ ...@@ -63,27 +67,25 @@
documentSaveOptions.newFileNames = ["DocumentViewPicker01.txt"]; // 保存文件名(可选) documentSaveOptions.newFileNames = ["DocumentViewPicker01.txt"]; // 保存文件名(可选)
``` ```
3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。 3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
</br>save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。
> **说明:**
>
> 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
```ts ```ts
let uri = null; let URI = null;
const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例 const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
documentViewPicker.save(documentSaveOptions).then((documentSaveResult) => { documentViewPicker.save(documentSaveOptions).then((documentSaveResult) => {
uri = documentSaveResult[0]; URI = documentSaveResult[0];
console.info('documentViewPicker.save to file succeed and URI is:' + URI);
}).catch((err) => { }).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 ```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); console.info('file fd: ' + file.fd);
``` ```
...@@ -97,10 +99,11 @@ ...@@ -97,10 +99,11 @@
## 保存音频类文件 ## 保存音频类文件
1. 导入选择器模块。 1. 导入选择器模块和文件管理模块
```ts ```ts
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
``` ```
2. 创建音频保存选项实例。 2. 创建音频保存选项实例。
...@@ -110,26 +113,25 @@ ...@@ -110,26 +113,25 @@
audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3']; // 保存文件名(可选) audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3']; // 保存文件名(可选)
``` ```
3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。 3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
> **说明:** </br>save返回的URI权限是读写权限,可以根据结果集中URI进行文件读写等操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件。
>
> 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
```ts ```ts
let uri = null; let URI = null;
const audioViewPicker = new picker.AudioViewPicker(); const audioViewPicker = new picker.AudioViewPicker();
audioViewPicker.save(audioSaveOptions).then((audioSelectResult) => { audioViewPicker.save(audioSaveOptions).then((audioSelectResult) => {
uri = audioSelectResult[0]; URI = audioSelectResult[0];
console.info('audioViewPicker.save to file succeed and URI is:' + URI);
}).catch((err) => { }).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 ```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); console.info('file fd: ' + file.fd);
``` ```
......
...@@ -12,10 +12,11 @@ ...@@ -12,10 +12,11 @@
## 选择图片或视频类文件 ## 选择图片或视频类文件
1. 导入选择器模块。 1. 导入选择器模块和文件管理模块
```ts ```ts
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
``` ```
2. 创建图库选择选项实例。 2. 创建图库选择选项实例。
...@@ -32,41 +33,44 @@ ...@@ -32,41 +33,44 @@
photoSelectOptions.maxSelectNumber = 5; // 选择媒体文件的最大数目 photoSelectOptions.maxSelectNumber = 5; // 选择媒体文件的最大数目
``` ```
4. 创建图库选择器实例,调用[select()](../reference/apis/js-apis-file-picker.md#select)接口拉起FilePicker界面进行文件选择。 4. 创建图库选择器实例,调用[select()](../reference/apis/js-apis-file-picker.md#select)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回[PhotoSelectResult](../reference/apis/js-apis-file-picker.md#photoselectresult)结果集。
文件选择成功后,返回[PhotoSelectResult](../reference/apis/js-apis-file-picker.md#photoselectresult)结果集,可以根据结果集中URI进行文件读取等操作 </br>select返回的URI权限是只读权限,可以根据结果集中URI进行读取文件数据操作。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件
```ts ```ts
let uri = null; let URI = null;
const photoPicker = new picker.PhotoViewPicker(); const photoViewPicker = new picker.PhotoViewPicker();
photoPicker.select(photoSelectOptions).then((photoSelectResult) => { photoViewPicker.select(photoSelectOptions).then((photoSelectResult) => {
uri = photoSelectResult.photoUris[0]; URI = photoSelectResult.photoUris[0];
console.info('photoViewPicker.select to file succeed and URI is:' + URI);
}).catch((err) => { }).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 ```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); 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 ```ts
let writeLen = fs.writeSync(file.fd, 'hello, world'); let buffer = new ArrayBuffer(4096);
console.info('write data to file succeed and size is:' + writeLen); let readLen = fs.readSync(file.fd, buffer);
console.info('readSync data to file succeed and buffer size is:' + readLen);
fs.closeSync(file); fs.closeSync(file);
``` ```
## 选择文档类文件 ## 选择文档类文件
1. 导入选择器模块。 1. 导入选择器模块和文件管理模块
```ts ```ts
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
``` ```
2. 创建文档选择选项实例。 2. 创建文档选择选项实例。
...@@ -75,23 +79,24 @@ ...@@ -75,23 +79,24 @@
const documentSelectOptions = new picker.DocumentSelectOptions(); const documentSelectOptions = new picker.DocumentSelectOptions();
``` ```
3. 创建文档选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-3)接口拉起FilePicker界面进行文件选择。 3. 创建文档选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-3)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回被选中文档的URI结果集。
文件选择成功后,返回被选中文档的URI结果集。开发者可以根据结果集中URI做进一步的处理 </br>select返回的URI权限是只读权限,开发者可以根据结果集中URI做进一步的处理。注意不能在picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件
例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI获取部分文件属性信息,比如文件大小、访问时间、修改时间等。如有获取文件名称需求,请暂时使用[startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md)获取。 </br>例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI获取部分文件属性信息,比如文件大小、访问时间、修改时间等。如有获取文件名称需求,请暂时使用[startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md)获取。
> **说明:** > **说明:**
> >
> 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。 > 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
```ts ```ts
let uri = null; let URI = null;
const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例 const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => { documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => {
uri = documentSelectResult[0]; URI = documentSelectResult[0];
console.info('documentViewPicker.select to file succeed and URI is:' + URI);
}).catch((err) => { }).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 @@ ...@@ -109,7 +114,7 @@
try { try {
let result = await context.startAbilityForResult(config, {windowMode: 1}); let result = await context.startAbilityForResult(config, {windowMode: 1});
if (result.resultCode !== 0) { 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; return;
} }
// 获取到文档文件的URI // 获取到文档文件的URI
...@@ -117,34 +122,34 @@ ...@@ -117,34 +122,34 @@
// 获取到文档文件的文件名称 // 获取到文档文件的文件名称
let file_name_list = result.want.parameters.file_name_list; let file_name_list = result.want.parameters.file_name_list;
} catch (err) { } 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 ```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); 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 ```ts
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); let buffer = new ArrayBuffer(4096);
let buf = new ArrayBuffer(4096); let readLen = fs.readSync(file.fd, buffer);
let num = fs.readSync(file.fd, buf); console.info('readSync data to file succeed and buffer size is:' + readLen);
console.info('read data to file succeed and size is:' + num);
fs.closeSync(file); fs.closeSync(file);
``` ```
## 选择音频类文件 ## 选择音频类文件
1. 导入选择器模块。 1. 导入选择器模块和文件管理模块
```ts ```ts
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
``` ```
2. 创建音频选择选项实例。 2. 创建音频选择选项实例。
...@@ -153,37 +158,39 @@ ...@@ -153,37 +158,39 @@
const audioSelectOptions = new picker.AudioSelectOptions(); const audioSelectOptions = new picker.AudioSelectOptions();
``` ```
3. 创建音频选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-6)接口拉起FilePicker界面进行文件选择。 3. 创建音频选择器实例。调用[select()](../reference/apis/js-apis-file-picker.md#select-6)接口拉起FilePicker界面进行文件选择。文件选择成功后,返回被选中音频的URI结果集。
文件选择成功后,返回被选中音频的URI结果集。开发者可以根据结果集中URI做进一步的处理 </br>select返回的URI权限是只读权限,开发者可以根据结果集中URI做读取文件数据操作。注意不能在 picker的回调里直接使用此URI进行打开文件操作,需要定义一个全局变量保存URI,使用类似一个按钮去触发打开文件
例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI拿到音频资源的文件句柄(FD),再配合媒体服务实现音频播放的开发,具体请参考[音频播放开发指导](../media/audio-playback-overview.md) </br>例如通过[文件管理接口](../reference/apis/js-apis-file-fs.md)根据URI拿到音频资源的文件句柄(FD),再配合媒体服务实现音频播放的开发,具体请参考[音频播放开发指导](../media/audio-playback-overview.md)
> **说明:** > **说明:**
> >
> 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。 > 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
```ts ```ts
let uri = null; let URI = null;
const audioViewPicker = new picker.AudioViewPicker(); const audioViewPicker = new picker.AudioViewPicker();
audioViewPicker.select(audioSelectOptions).then(audioSelectResult => { audioViewPicker.select(audioSelectOptions).then(audioSelectResult => {
uri = audioSelectOptions[0]; URI = audioSelectOptions[0];
console.info('audioViewPicker.select to file succeed and URI is:' + URI);
}).catch((err) => { }).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 ```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); 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 ```ts
let writeLen = fs.writeSync(file.fd, 'hello, world'); let buffer = new ArrayBuffer(4096);
console.info('write data to file succeed and size is:' + writeLen); let readLen = fs.readSync(file.fd, buffer);
console.info('readSync data to file succeed and buffer size is:' + readLen);
fs.closeSync(file); fs.closeSync(file);
``` ```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册