1# @ohos.file.picker (选择器)
2
3> **说明:**
4>
5> 该模块接口从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
6
7选择器(Picker)是一个封装PhotoViewPicker、DocumentViewPicker、AudioViewPicker等API模块,具有选择与保存的能力。应用可以自行选择使用哪种API实现文件选择和文件保存的功能。该类接口,需要应用在界面UIAbility中调用,否则无法拉起photoPicker应用或FilePicker应用。
8
9## 导入模块
10
11```ts
12import  { picker } from '@kit.CoreFileKit';
13```
14
15## DocumentViewPicker
16
17文件选择器对象,用来支撑选择和保存各种格式文档。在使用前,需要先创建DocumentViewPicker实例。
18
19**系统能力**:SystemCapability.FileManagement.UserFileService
20
21### constructor<sup>12+</sup>
22
23constructor(context: Context)
24
25**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
26
27**系统能力**:SystemCapability.FileManagement.UserFileService
28
29创建DocumentViewPicker对象,推荐使用该构造函数,获取context参考[getContext](../apis-arkui/js-apis-getContext.md)
30
31**示例:**
32
33```ts
34import { common } from '@kit.AbilityKit';
35import  { picker } from '@kit.CoreFileKit';
36@Entry
37@Component
38struct Index {
39  @State message: string = 'hello World';
40
41  build() {
42    Row() {
43      Column() {
44        Text(this.message)
45          .fontSize(50)
46          .fontWeight(FontWeight.Bold)
47          .onClick(()=>{
48            let context = getContext(this) as common.Context; // 请确保getContext(this)返回结果为UIAbilityContext
49            let documentPicker = new picker.DocumentViewPicker(context);
50          })
51      }
52      .width('100%')
53    }
54    .height('100%')
55  }
56}
57```
58
59### constructor<sup>12+</sup>
60
61constructor()
62
63**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
64
65**系统能力**:SystemCapability.FileManagement.UserFileService
66
67创建DocumentViewPicker对象,不推荐使用该构造函数,会出现概率性失败问题
68
69**示例:**
70
71```ts
72let documentPicker = new picker.DocumentViewPicker(); // 不推荐使用无参构造,会出现概率性拉起失败问题
73```
74
75### select
76
77select(option?: DocumentSelectOptions): Promise&lt;Array&lt;string&gt;&gt;
78
79通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用Promise异步返回形式,传入可选参数DocumentSelectOptions对象,返回选择文件的uri数组。
80
81**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
82
83**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
84
85**系统能力**:SystemCapability.FileManagement.UserFileService
86
87**参数:**
88
89| 参数名  | 类型    | 必填 | 说明                       |
90| ------- | ------- | ---- | -------------------------- |
91| option | [DocumentSelectOptions](#documentselectoptions) | 否   | documentPicker选择选项,若无此参数,则默认拉起documentPicker主界面 |
92
93**返回值:**
94
95| 类型                            | 说明    |
96| ----------------------------- | :---- |
97| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回documentPicker选择后的结果集 |
98
99**示例:**
100
101```ts
102import { BusinessError } from '@kit.BasicServicesKit';
103import { common } from '@kit.AbilityKit';
104import  { picker } from '@kit.CoreFileKit';
105async function example07(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
106  try {
107    let documentSelectOptions = new picker.DocumentSelectOptions();
108    let documentPicker = new picker.DocumentViewPicker(context);
109    documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {
110      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));
111    }).catch((err: BusinessError) => {
112      console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
113    });
114  } catch (error) {
115    let err: BusinessError = error as BusinessError;
116    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
117  }
118}
119```
120
121### select
122
123select(option: DocumentSelectOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
124
125通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用callback异步返回形式,传入参数DocumentSelectOptions对象,返回选择文件的uri数组。
126
127**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
128
129**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
130
131**系统能力**:SystemCapability.FileManagement.UserFileService
132
133**参数:**
134
135| 参数名  | 类型    | 必填 | 说明                       |
136| ------- | ------- | ---- | -------------------------- |
137| option | [DocumentSelectOptions](#documentselectoptions) | 是   | documentPicker选择选项 |
138| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker选择后的结果集 |
139
140**示例:**
141
142```ts
143import { BusinessError } from '@kit.BasicServicesKit';
144import { common } from '@kit.AbilityKit';
145import  { picker } from '@kit.CoreFileKit';
146async function example08(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
147  try {
148    let documentSelectOptions = new picker.DocumentSelectOptions();
149    let documentPicker = new picker.DocumentViewPicker(context);
150    documentPicker.select(documentSelectOptions, (err: BusinessError, documentSelectResult: Array<string>) => {
151      if (err) {
152        console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
153        return;
154      }
155      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));
156    });
157  } catch (error) {
158    let err: BusinessError = error as BusinessError;
159    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
160  }
161}
162```
163
164### select
165
166select(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
167
168通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用callback异步返回形式,返回选择文件的uri数组。
169
170**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
171
172**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
173
174**系统能力**:SystemCapability.FileManagement.UserFileService
175
176**参数:**
177
178| 参数名  | 类型    | 必填 | 说明                       |
179| ------- | ------- | ---- | -------------------------- |
180| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker选择后的结果集 |
181
182**示例:**
183
184```ts
185import { BusinessError } from '@kit.BasicServicesKit';
186import { common } from '@kit.AbilityKit';
187import  { picker } from '@kit.CoreFileKit';
188async function example09(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
189  try {
190    let documentPicker = new picker.DocumentViewPicker(context);
191    documentPicker.select((err: BusinessError, documentSelectResult: Array<string>) => {
192      if (err) {
193        console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
194        return;
195      }
196      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));
197    });
198  } catch (error) {
199    let err: BusinessError = error as BusinessError;
200    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
201  }
202}
203```
204
205### save
206
207save(option?: DocumentSaveOptions): Promise&lt;Array&lt;string&gt;&gt;
208
209通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用Promise异步返回形式,传入可选参数DocumentSaveOptions对象,返回保存文件的uri数组。
210
211**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
212
213**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
214
215**系统能力**:SystemCapability.FileManagement.UserFileService
216
217**参数:**
218
219| 参数名  | 类型    | 必填 | 说明                       |
220| ------- | ------- | ---- | -------------------------- |
221| option | [DocumentSaveOptions](#documentsaveoptions) | 否   | documentPicker保存选项,若无此参数,则拉起documentPicker界面后需用户自行输入保存的文件名 |
222
223**返回值:**
224
225| 类型                            | 说明    |
226| ----------------------------- | :---- |
227| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回documentPicker保存后的结果集 |
228
229**示例:**
230
231```ts
232import { BusinessError } from '@kit.BasicServicesKit';
233import { common } from '@kit.AbilityKit';
234import  { picker } from '@kit.CoreFileKit';
235async function example10(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
236  try {
237    let documentSaveOptions = new picker.DocumentSaveOptions();
238    documentSaveOptions.newFileNames = ['DocumentViewPicker01.txt'];
239    let documentPicker = new picker.DocumentViewPicker(context);
240    documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
241      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
242    }).catch((err: BusinessError) => {
243      console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
244    });
245  } catch (error) {
246    let err: BusinessError = error as BusinessError;
247    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
248  }
249}
250```
251
252### save
253
254save(option: DocumentSaveOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
255
256通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用callback异步返回形式,传入参数DocumentSaveOptions对象,返回保存文件的uri数组。
257
258**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
259
260**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
261
262**系统能力**:SystemCapability.FileManagement.UserFileService
263
264**参数:**
265
266| 参数名  | 类型    | 必填 | 说明                       |
267| ------- | ------- | ---- | -------------------------- |
268| option | [DocumentSaveOptions](#documentsaveoptions) | 是   | documentPicker保存选项 |
269| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker保存后的结果集 |
270
271**示例:**
272
273```ts
274import { BusinessError } from '@kit.BasicServicesKit';
275import { common } from '@kit.AbilityKit';
276import  { picker } from '@kit.CoreFileKit';
277async function example11(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
278  try {
279    let documentSaveOptions = new picker.DocumentSaveOptions();
280    documentSaveOptions.newFileNames = ['DocumentViewPicker02.txt'];
281    let documentPicker = new picker.DocumentViewPicker(context);
282    documentPicker.save(documentSaveOptions, (err: BusinessError, documentSaveResult: Array<string>) => {
283      if (err) {
284        console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
285        return;
286      }
287      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
288    });
289  } catch (error) {
290    let err: BusinessError = error as BusinessError;
291    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
292  }
293}
294```
295
296### save
297
298save(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
299
300通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用callback异步返回形式,返回保存文件的uri数组。
301
302**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
303
304**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
305
306**系统能力**:SystemCapability.FileManagement.UserFileService
307
308**参数:**
309
310| 参数名  | 类型    | 必填 | 说明                       |
311| ------- | ------- | ---- | -------------------------- |
312| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker保存后的结果集 |
313
314**示例:**
315
316```ts
317import { BusinessError } from '@kit.BasicServicesKit';
318import { common } from '@kit.AbilityKit';
319import  { picker } from '@kit.CoreFileKit';
320async function example12(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
321  try {
322    let documentPicker = new picker.DocumentViewPicker(context);
323    documentPicker.save((err: BusinessError, documentSaveResult: Array<string>) => {
324      if (err) {
325        console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
326        return;
327      }
328      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
329    });
330  } catch (error) {
331    let err: BusinessError = error as BusinessError;
332    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
333  }
334}
335```
336
337### getSelectedIndex<sup>13+</sup>;
338
339getSelectedIndex(): number
340
341**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
342
343**系统能力**:SystemCapability.FileManagement.UserFileService
344
345通过getSelectedIndex()方法获取保存成功后的文件后缀类型的下标。
346  > **注意**:
347  > <br>**1**、getSelectedIndex()方法只在调用 [save()](#save)时使用生效,其他场景下不可以使用。
348  > <br>**2**、getSelectedIndex()方法需要配置参数[DocumentSaveOptions.fileSuffixChoices](#documentsaveoptions)使用。
349  > <br>**3**、getSelectedIndex()方法返回的是所选后缀类型的下标(number),所选的后缀类型是开发者所传的参数[DocumentSaveOptions.fileSuffixChoices](#documentsaveoptions)里的某个后缀类型,如果没有传参,并且调用了getSelectedIndex()方法,返回值为-1。
350
351```ts
352import { BusinessError } from '@kit.BasicServicesKit';
353import { common } from '@kit.AbilityKit';
354import  { picker } from '@kit.CoreFileKit';
355async function exampleIndex(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
356  try {
357    let documentSaveOptions = new picker.DocumentSaveOptions();
358    //保存文件的名字
359    documentSaveOptions.newFileNames = ['DocumentViewPicker01'];
360    //保存文件的后缀类型
361    documentSaveOptions.fileSuffixChoices = ['txt', 'mp4', 'pdf'];
362    let documentPicker = new picker.DocumentViewPicker(context);
363    documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
364      if (documentSaveOptions.fileSuffixChoices != undefined && documentSaveResult != undefined) {
365        //获取保存文件的后缀类型的下标
366        let index = documentPicker.getSelectedIndex();
367        //获取保存文件的后缀类型。
368        let selectedsuffix = documentSaveOptions.fileSuffixChoices[index];
369        console.info ('DocumentViewPicker.save selectedsuffix is ' + selectedsuffix);
370      }
371      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
372    }).catch((err: BusinessError) => {
373      console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
374    });
375  } catch (error) {
376    let err: BusinessError = error as BusinessError;
377    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
378  }
379}
380```
381## AudioViewPicker
382
383音频选择器对象,用来支撑选择和保存音频类文件等用户场景。在使用前,需要先创建AudioViewPicker实例。
384
385**系统能力**:SystemCapability.FileManagement.UserFileService
386
387### constructor<sup>12+</sup>
388
389constructor(context: Context)
390
391**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
392
393**系统能力**:SystemCapability.FileManagement.UserFileService
394
395创建AudioViewPicker对象,推荐使用该构造函数,获取context参考[getContext](../apis-arkui/js-apis-getContext.md)
396
397**示例:**
398
399```ts
400import { common } from '@kit.AbilityKit';
401import  { picker } from '@kit.CoreFileKit';
402@Entry
403@Component
404struct Index {
405  @State message: string = 'hello World';
406
407  build() {
408    Row() {
409      Column() {
410        Text(this.message)
411          .fontSize(50)
412          .fontWeight(FontWeight.Bold)
413          .onClick(()=>{
414            let context = getContext(this) as common.Context; // 请确保getContext(this)返回结果为UIAbilityContext
415            let audioPicker = new picker.AudioViewPicker(context);
416          })
417      }
418      .width('100%')
419    }
420    .height('100%')
421  }
422}
423```
424### constructor<sup>12+</sup>
425
426constructor()
427
428**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
429
430**系统能力**:SystemCapability.FileManagement.UserFileService
431
432创建AudioViewPicker对象,不推荐使用该构造函数,会出现概率性失败问题
433
434**示例:**
435
436```ts
437let audioPicker = new picker.AudioViewPicker(); // 不推荐使用无参构造,会出现概率性拉起失败问题
438```
439
440### select
441
442select(option?: AudioSelectOptions): Promise&lt;Array&lt;string&gt;&gt;
443
444通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件。接口采用Promise异步返回形式,传入可选参数AudioSelectOptions对象,返回选择音频文件的uri数组。
445
446**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[媒体类uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri介绍)。
447
448**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
449
450**系统能力**:SystemCapability.FileManagement.UserFileService
451
452**参数:**
453
454| 参数名  | 类型    | 必填 | 说明                       |
455| ------- | ------- | ---- | -------------------------- |
456| option | [AudioSelectOptions](#audioselectoptions) | 否   | audioPicker音频选择选项,若无此参数,则默认拉起audioPicker主界面  |
457
458**返回值:**
459
460| 类型                            | 说明    |
461| ----------------------------- | :---- |
462| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回audioPicker选择音频后的结果集 |
463
464**示例:**
465
466```ts
467import { BusinessError } from '@kit.BasicServicesKit';
468import { common } from '@kit.AbilityKit';
469import  { picker } from '@kit.CoreFileKit';
470async function example13(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
471  try {
472    let audioSelectOptions = new picker.AudioSelectOptions();
473    let audioPicker = new picker.AudioViewPicker(context);
474    audioPicker.select(audioSelectOptions).then((audioSelectResult: Array<string>) => {
475      console.info('AudioViewPicker.select successfully, audioSelectResult uri: ' + JSON.stringify(audioSelectResult));
476    }).catch((err: BusinessError) => {
477      console.error('AudioViewPicker.select failed with err: ' + JSON.stringify(err));
478    });
479  } catch (error) {
480    let err: BusinessError = error as BusinessError;
481    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
482  }
483}
484```
485
486### select
487
488select(option: AudioSelectOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
489
490通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件。接口采用callback异步返回形式,传入参数AudioSelectOptions对象,返回选择音频文件的uri数组。
491
492**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[媒体类uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri介绍)。
493
494**系统能力**:SystemCapability.FileManagement.UserFileService
495
496**参数:**
497
498| 参数名  | 类型    | 必填 | 说明                       |
499| ------- | ------- | ---- | -------------------------- |
500| option | [AudioSelectOptions](#audioselectoptions) | 是   | audioPicker音频选择选项 |
501| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker选择音频后的结果集 |
502
503**示例:**
504
505```ts
506import { BusinessError } from '@kit.BasicServicesKit';
507import { common } from '@kit.AbilityKit';
508import  { picker } from '@kit.CoreFileKit';
509async function example14(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
510  try {
511    let audioSelectOptions = new picker.AudioSelectOptions();
512    let audioPicker = new picker.AudioViewPicker(context);
513    audioPicker.select(audioSelectOptions, (err: BusinessError, audioSelectResult: Array<string>) => {
514      if (err) {
515        console.error('AudioViewPicker.select failed with err: ' + JSON.stringify(err));
516        return;
517      }
518      console.info('AudioViewPicker.select successfully, audioSelectResult uri: ' + JSON.stringify(audioSelectResult));
519    });
520  } catch (error) {
521    let err: BusinessError = error as BusinessError;
522    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
523  }
524}
525```
526
527### select
528
529select(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
530
531通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件。接口采用callback异步返回形式,返回选择音频文件的uri数组。
532
533**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[媒体类uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri介绍)。
534
535**系统能力**:SystemCapability.FileManagement.UserFileService
536
537**参数:**
538
539| 参数名  | 类型    | 必填 | 说明                       |
540| ------- | ------- | ---- | -------------------------- |
541| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker选择音频后的结果集 |
542
543**示例:**
544
545```ts
546import { BusinessError } from '@kit.BasicServicesKit';
547import { common } from '@kit.AbilityKit';
548import  { picker } from '@kit.CoreFileKit';
549async function example15(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
550  try {
551    let audioPicker = new picker.AudioViewPicker(context);
552    audioPicker.select((err: BusinessError, audioSelectResult: Array<string>) => {
553      if (err) {
554        console.error('AudioViewPicker.select failed with err: ' + JSON.stringify(err));
555        return;
556      }
557      console.info('AudioViewPicker.select successfully, audioSelectResult uri: ' + JSON.stringify(audioSelectResult));
558    });
559  } catch (error) {
560    let err: BusinessError = error as BusinessError;
561    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
562  }
563}
564```
565
566### save
567
568save(option?: AudioSaveOptions): Promise&lt;Array&lt;string&gt;&gt;
569
570通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用Promise异步返回形式,传入可选参数AudioSaveOptions对象,返回保存音频文件的uri数组。
571
572**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
573
574**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
575
576**系统能力**:SystemCapability.FileManagement.UserFileService
577
578**参数:**
579
580| 参数名  | 类型    | 必填 | 说明                       |
581| ------- | ------- | ---- | -------------------------- |
582| option | [AudioSaveOptions](#audiosaveoptions) | 否   | audioPicker保存音频文件选项,若无此参数,则拉起audioPicker界面后需用户自行输入保存的文件名 |
583
584**返回值:**
585
586| 类型                            | 说明    |
587| ----------------------------- | ---- |
588| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回audioPicker保存音频文件后的结果集 |
589
590**示例:**
591
592```ts
593import { BusinessError } from '@kit.BasicServicesKit';
594import { common } from '@kit.AbilityKit';
595import  { picker } from '@kit.CoreFileKit';
596async function example16(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
597  try {
598    let audioSaveOptions = new picker.AudioSaveOptions();
599    audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3'];
600    let audioPicker = new picker.AudioViewPicker(context);
601    audioPicker.save(audioSaveOptions).then((audioSaveResult: Array<string>) => {
602      console.info('AudioViewPicker.save successfully, audioSaveResult uri: ' + JSON.stringify(audioSaveResult))
603    }).catch((err: BusinessError) => {
604      console.error('AudioViewPicker.save failed with err: ' + JSON.stringify(err));
605    });
606  } catch (error) {
607    let err: BusinessError = error as BusinessError;
608    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
609  }
610}
611```
612
613### save
614
615save(option: AudioSaveOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
616
617通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用callback异步返回形式,传入参数AudioSaveOptions对象,返回保存音频文件的uri数组。
618
619**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
620
621**系统能力**:SystemCapability.FileManagement.UserFileService
622
623**参数:**
624
625| 参数名  | 类型    | 必填 | 说明                       |
626| ------- | ------- | ---- | -------------------------- |
627| option | [AudioSaveOptions](#audiosaveoptions) | 是   | audioPicker保存音频文件选项 |
628| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker保存音频文件后的结果集 |
629
630**示例:**
631
632```ts
633import { BusinessError } from '@kit.BasicServicesKit';
634import { common } from '@kit.AbilityKit';
635import  { picker } from '@kit.CoreFileKit';
636async function example17(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
637  try {
638    let audioSaveOptions = new picker.AudioSaveOptions();
639    audioSaveOptions.newFileNames = ['AudioViewPicker02.mp3'];
640    let audioPicker = new picker.AudioViewPicker(context);
641    audioPicker.save(audioSaveOptions, (err: BusinessError, audioSaveResult: Array<string>) => {
642      if (err) {
643        console.error('AudioViewPicker.save failed with err: ' + JSON.stringify(err));
644        return;
645      }
646      console.info('AudioViewPicker.save successfully, audioSaveResult uri: ' + JSON.stringify(audioSaveResult));
647    });
648  } catch (error) {
649    let err: BusinessError = error as BusinessError;
650    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
651  }
652}
653```
654
655### save
656
657save(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
658
659通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用callback异步返回形式,返回保存音频文件的uri数组。
660
661**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
662
663**系统能力**:SystemCapability.FileManagement.UserFileService
664
665**参数:**
666
667| 参数名  | 类型    | 必填 | 说明                       |
668| ------- | ------- | ---- | -------------------------- |
669| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker保存音频文件后的结果集 |
670
671**示例:**
672
673```ts
674import { BusinessError } from '@kit.BasicServicesKit';
675import { common } from '@kit.AbilityKit';
676import  { picker } from '@kit.CoreFileKit';
677async function example18(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
678  try {
679    let audioPicker = new picker.AudioViewPicker(context);
680    audioPicker.save((err: BusinessError, audioSaveResult: Array<string>) => {
681      if (err) {
682        console.error('AudioViewPicker.save failed with err: ' + JSON.stringify(err));
683        return;
684      }
685      console.info('AudioViewPicker.save successfully, audioSaveResult uri: ' + JSON.stringify(audioSaveResult));
686    });
687  } catch (error) {
688    let err: BusinessError = error as BusinessError;
689    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
690  }
691}
692```
693
694## DocumentSelectMode<sup>11+</sup>
695
696枚举,picker选择的文档类型。
697
698**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
699
700**系统能力:** SystemCapability.FileManagement.UserFileService.FolderSelection
701
702| 名称  |  值 |  说明 |
703| ----- |  ---- | ---- |
704| FILE  | 0  | 文件类型  |
705| FOLDER | 1  | 文件夹类型  |
706| MIXED | 2  | 文件和文件夹混合类型  |
707
708## DocumentSelectOptions
709
710文档选择选项。
711
712**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
713
714**系统能力:** SystemCapability.FileManagement.UserFileService
715
716| 名称                    | 类型                                          | 必填 | 说明                                       |
717| :---------------------- |---------------------------------------------| ---- |------------------------------------------|
718| maxSelectNumber<sup>10+</sup>       | number                                      | 否   | 选择文件最大个数,上限500,有效值范围1-500(选择目录仅对具有该系统能力的设备开放。且目录选择的最大个数为1)。默认值是1。**系统能力:** SystemCapability.FileManagement.UserFileService  |
719| defaultFilePathUri<sup>10+</sup>    | string                                      | 否   | 指定选择的文件或者目录路径                            |
720| fileSuffixFilters<sup>10+</sup>     | Array&lt;string&gt;                         | 否   | 选择文件的后缀类型,传入字符串数组,每一项代表一个后缀选项,每一项内部用"\|\"分为两部分,第一部分为描述,第二部分为过滤后缀。没有"\|\"则没有描述,该项整体是一个过滤后缀。每项过滤后缀可以存在多个后缀名,则每一个后缀名之间用英文逗号进行分隔,传入数组长度不能超过100。仅对具有该系统能力的设备开放。默认全部过滤,即显示所有文件。**系统能力:** SystemCapability.FileManagement.UserFileService   |
721| selectMode<sup>11+</sup>         | [DocumentSelectMode](#documentselectmode11) | 否   | 支持选择的资源类型,比如:文件、文件夹和二者混合,仅对具有该系统能力的设备开放,默认值是文件类型。**系统能力:** SystemCapability.FileManagement.UserFileService.FolderSelection  |
722| authMode<sup>12+</sup>    | boolean                              | 否   | 拉起授权picker,默认为false(非授权模式)。当authMode为true时为授权模式,defaultFilePathUri必填,表明待授权uri。仅对具有该系统能力的设备开放,**系统能力:** SystemCapability.FileManagement.UserFileService.FolderSelection  |     
723
724## DocumentPickerMode<sup>12+</sup>
725
726枚举,picker选择的文档类型。
727
728**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
729
730**系统能力:** SystemCapability.FileManagement.UserFileService
731
732| 名称  |  值 |  说明 |
733| ----- |  ---- | ---- |
734| DEFAULT  | 0  | 标准模式 |
735| DOWNLOAD | 1  | 下载模式 |
736
737## DocumentSaveOptions
738
739文档保存选项。
740
741**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
742
743**系统能力:** SystemCapability.FileManagement.UserFileService
744
745| 名称                    | 类型                | 必填 |  说明                           |
746| ----------------------- | ------------------- | ---- | ---------------------------- |
747| newFileNames            | Array&lt;string&gt;    | 否   | 拉起documentPicker进行保存的文件名,若无此参数,则默认需要用户自行输入  |
748| defaultFilePathUri<sup>10+</sup>    | string  | 否   | 指定保存的文件或者目录路径  |
749| fileSuffixChoices<sup>10+</sup>     | Array&lt;string&gt; | 否   | 保存文件的后缀类型。传入字符串数组,每一项代表一个后缀选项,每一项内部用"\|\"分为两部分,第一部分为描述,第二部分为要保存的后缀。没有"\|\"则没有描述,该项整体是一个保存的后缀。默认没有后缀类型。 |
750| pickerMode<sup>12+</sup>     | [DocumentPickerMode](#documentpickermode12) | 否   | 拉起picker的类型, 默认为DEFAULT。当pickerMode设置为DOWNLOAD时,用户配置的参数newFileNames、defaultFilePathUri和fileSuffixChoices将不会生效 |
751
752## AudioSelectOptions
753
754音频选择选项。
755
756**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
757
758**系统能力:** SystemCapability.FileManagement.UserFileService
759| 名称                    | 类型                                          | 必填 | 说明                                       |
760| :---------------------- |---------------------------------------------| ---- |------------------------------------------|
761| maxSelectNumber<sup>12+</sup>       | number                                      | 否   | 选择文件最大个数,默认值为1,上限500,有效值范围1-500 |
762
763## AudioSaveOptions
764
765音频的保存选项。
766
767**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
768
769**系统能力:** SystemCapability.FileManagement.UserFileService
770
771| 名称                    | 类型                | 必填 |  说明                           |
772| ----------------------- | ------------------- | ---- | ---------------------------- |
773| newFileNames              | Array&lt;string&gt;    | 否  | 拉起audioPicker进行保存音频资源的文件名,若无此参数,则默认需要用户自行输入 |
774
775## PhotoViewPicker<sup>(deprecated)</sup>
776
777图库选择器对象,用来支撑选择图片/视频和保存图片/视频等用户场景。选择文件推荐使用[PhotoAccessHelper的PhotoViewPicker](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoviewpicker)。在使用前,需要先创建PhotoViewPicker实例。
778
779> **说明:**
780>
781> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoviewpicker)替代。
782
783**系统能力**:SystemCapability.FileManagement.UserFileService
784
785### constructor<sup>12+</sup>
786
787constructor(context: Context)
788
789**系统能力**:SystemCapability.FileManagement.UserFileService
790
791创建PhotoViewPicker对象,推荐使用该构造函数,获取context参考[getContext](../apis-arkui/js-apis-getContext.md)
792
793**示例:**
794
795```ts
796import { common } from '@kit.AbilityKit';
797import  { picker } from '@kit.CoreFileKit';
798@Entry
799@Component
800struct Index {
801  @State message: string = 'hello World';
802
803  build() {
804    Row() {
805      Column() {
806        Text(this.message)
807          .fontSize(50)
808          .fontWeight(FontWeight.Bold)
809          .onClick(()=>{
810            let context = getContext(this) as common.Context; // 请确保 getContext(this) 返回结果为 UIAbilityContext
811            let photoPicker = new picker.PhotoViewPicker(context);
812          })
813      }
814      .width('100%')
815    }
816    .height('100%')
817  }
818}
819```
820
821### constructor<sup>12+</sup>
822
823constructor()
824
825**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
826
827**系统能力**:SystemCapability.FileManagement.UserFileService
828
829创建PhotoViewPicker对象,不推荐使用该构造函数,会出现概率性失败问题
830
831**示例:**
832
833```ts
834let photoPicker = new picker.PhotoViewPicker(); // 不推荐使用无参构造,会出现概率性拉起失败问题
835```
836
837### select<sup>(deprecated)</sup>
838
839select(option?: PhotoSelectOptions): Promise&lt;PhotoSelectResult&gt;
840
841通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用Promise异步返回形式,传入可选参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
842
843> **说明:**
844>
845> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker#select](../apis-media-library-kit/js-apis-photoAccessHelper.md#select)替代。
846
847**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
848
849**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
850
851**系统能力**:SystemCapability.FileManagement.UserFileService
852
853**参数:**
854
855| 参数名  | 类型    | 必填 | 说明                       |
856| ------- | ------- | ---- | -------------------------- |
857| option | [PhotoSelectOptions](#photoselectoptionsdeprecated) | 否   | photoPicker选择选项,若无此参数,则默认选择媒体文件类型为图片和视频类型,选择媒体文件数量的默认最大值为50 |
858
859**返回值:**
860
861| 类型                            | 说明    |
862| ----------------------------- | :---- |
863| Promise&lt;[PhotoSelectResult](#photoselectresultdeprecated)&gt; | Promise对象。返回photoPicker选择后的结果集 |
864
865**示例:**
866
867```ts
868import { BusinessError } from '@kit.BasicServicesKit';
869import { common } from '@kit.AbilityKit';
870import  { picker } from '@kit.CoreFileKit';
871async function example01(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
872  try {
873    let photoSelectOptions = new picker.PhotoSelectOptions();
874    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
875    photoSelectOptions.maxSelectNumber = 5;
876    let photoPicker = new picker.PhotoViewPicker(context);
877    photoPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => {
878      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult));
879    }).catch((err: BusinessError) => {
880      console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
881    });
882  } catch (error) {
883    let err: BusinessError = error as BusinessError;
884    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
885  }
886}
887```
888
889### select<sup>(deprecated)</sup>
890
891select(option: PhotoSelectOptions, callback: AsyncCallback&lt;PhotoSelectResult&gt;): void
892
893通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
894
895> **说明:**
896>
897> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker#select](../apis-media-library-kit/js-apis-photoAccessHelper.md#select-1)替代。
898
899**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
900
901**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
902
903**系统能力**:SystemCapability.FileManagement.UserFileService
904
905**参数:**
906
907| 参数名  | 类型    | 必填 | 说明                       |
908| ------- | ------- | ---- | -------------------------- |
909| option | [PhotoSelectOptions](#photoselectoptionsdeprecated) | 是   | photoPicker选择选项 |
910| callback | AsyncCallback&lt;[PhotoSelectResult](#photoselectresultdeprecated)&gt;      | 是   | callback 返回photoPicker选择后的结果集 |
911
912**示例:**
913
914```ts
915import { BusinessError } from '@kit.BasicServicesKit';
916import { common } from '@kit.AbilityKit';
917import  { picker } from '@kit.CoreFileKit';
918async function example02(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
919  try {
920    let photoSelectOptions = new picker.PhotoSelectOptions();
921    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
922    photoSelectOptions.maxSelectNumber = 5;
923    let photoPicker = new picker.PhotoViewPicker(context);
924    photoPicker.select(photoSelectOptions, (err: BusinessError, photoSelectResult: picker.PhotoSelectResult) => {
925      if (err) {
926        console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
927        return;
928      }
929      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult));
930    });
931  } catch (error) {
932    let err: BusinessError = error as BusinessError;
933    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
934  }
935}
936```
937
938### select<sup>(deprecated)</sup>
939
940select(callback: AsyncCallback&lt;PhotoSelectResult&gt;): void
941
942通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,返回PhotoSelectResult对象。
943
944> **说明:**
945>
946> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker#select](../apis-media-library-kit/js-apis-photoAccessHelper.md#select-2)替代。
947
948**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
949
950**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
951
952**系统能力**:SystemCapability.FileManagement.UserFileService
953
954**参数:**
955
956| 参数名  | 类型    | 必填 | 说明                       |
957| ------- | ------- | ---- | -------------------------- |
958| callback | AsyncCallback&lt;[PhotoSelectResult](#photoselectresultdeprecated)&gt;      | 是   | callback 返回photoPicker选择后的结果集 |
959
960**示例:**
961
962```ts
963import { BusinessError } from '@kit.BasicServicesKit';
964import { common } from '@kit.AbilityKit';
965import  { picker } from '@kit.CoreFileKit';
966async function example03(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
967  try {
968    let photoPicker = new picker.PhotoViewPicker(context);
969    photoPicker.select((err: BusinessError, photoSelectResult: picker.PhotoSelectResult) => {
970      if (err) {
971        console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
972        return;
973      }
974      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult));
975    });
976  } catch (error) {
977    let err: BusinessError = error as BusinessError;
978    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
979  }
980}
981```
982
983### save<sup>(deprecated)</sup>
984
985save(option?: PhotoSaveOptions): Promise&lt;Array&lt;string&gt;&gt;
986
987通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用Promise异步返回形式,传入可选参数PhotoSaveOptions对象,返回保存文件的uri数组。
988
989> **说明:**
990>
991> 从 API version 9开始支持,从API version 12开始废弃。建议使用[SaveButton](../apis-arkui/arkui-ts/ts-security-components-savebutton.md#savebutton)替代。
992
993**注意**:此接口会将文件保存在文件管理器,而不是图库。返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
994
995**系统能力**:SystemCapability.FileManagement.UserFileService
996
997**参数:**
998
999| 参数名  | 类型    | 必填 | 说明                       |
1000| ------- | ------- | ---- | -------------------------- |
1001| option | [PhotoSaveOptions](#photosaveoptionsdeprecated) | 否   | photoPicker保存图片或视频文件选项,若无此参数,则拉起photoPicker界面后需用户自行输入保存的文件名 |
1002
1003**返回值:**
1004
1005| 类型                            | 说明    |
1006| ----------------------------- | :---- |
1007| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回photoPicker保存图片或视频文件后的结果集 |
1008
1009**示例:**
1010
1011```ts
1012import { BusinessError } from '@kit.BasicServicesKit';
1013import { common } from '@kit.AbilityKit';
1014import  { picker } from '@kit.CoreFileKit';
1015async function example04(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1016  try {
1017    let photoSaveOptions = new picker.PhotoSaveOptions();
1018    photoSaveOptions.newFileNames = ['PhotoViewPicker01.jpg', 'PhotoViewPicker01.mp4'];
1019    let photoPicker = new picker.PhotoViewPicker(context);
1020    photoPicker.save(photoSaveOptions).then((photoSaveResult: Array<string>) => {
1021      console.info('PhotoViewPicker.save successfully, photoSaveResult uri: ' + JSON.stringify(photoSaveResult));
1022    }).catch((err: BusinessError) => {
1023      console.error('PhotoViewPicker.save failed with err: ' + JSON.stringify(err));
1024    });
1025  } catch (error) {
1026    let err: BusinessError = error as BusinessError;
1027      console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1028  }
1029}
1030```
1031
1032### save<sup>(deprecated)</sup>
1033
1034save(option: PhotoSaveOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
1035
1036通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSaveOptions对象,返回保存文件的uri数组。
1037
1038> **说明:**
1039>
1040> 从 API version 9开始支持,从API version 12开始废弃。建议使用[SaveButton](../apis-arkui/arkui-ts/ts-security-components-savebutton.md#savebutton)替代。
1041
1042**注意**:此接口会将文件保存在文件管理器,而不是图库。返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
1043
1044**系统能力**:SystemCapability.FileManagement.UserFileService
1045
1046**参数:**
1047
1048| 参数名  | 类型    | 必填 | 说明                       |
1049| ------- | ------- | ---- | -------------------------- |
1050| option | [PhotoSaveOptions](#photosaveoptionsdeprecated) | 是   | photoPicker保存图片或视频文件选项 |
1051| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回photoPicker保存图片或视频文件后的结果集 |
1052
1053**示例:**
1054
1055```ts
1056import { BusinessError } from '@kit.BasicServicesKit';
1057import { common } from '@kit.AbilityKit';
1058import  { picker } from '@kit.CoreFileKit';
1059async function example05(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1060  try {
1061    let photoSaveOptions = new picker.PhotoSaveOptions();
1062    photoSaveOptions.newFileNames = ['PhotoViewPicker02.jpg','PhotoViewPicker02.mp4'];
1063    let photoPicker = new picker.PhotoViewPicker(context);
1064    photoPicker.save(photoSaveOptions, (err: BusinessError, photoSaveResult: Array<string>) => {
1065      if (err) {
1066        console.error('PhotoViewPicker.save failed with err: ' + JSON.stringify(err));
1067        return;
1068      }
1069      console.info('PhotoViewPicker.save successfully, photoSaveResult uri: ' + JSON.stringify(photoSaveResult));
1070    });
1071  } catch (error) {
1072    let err: BusinessError = error as BusinessError;
1073    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1074  }
1075}
1076```
1077
1078### save<sup>(deprecated)</sup>
1079
1080save(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
1081
1082通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用callback异步返回形式,返回保存文件的uri数组。
1083
1084> **说明:**
1085>
1086> 从 API version 9开始支持,从API version 12开始废弃。建议使用[SaveButton](../apis-arkui/arkui-ts/ts-security-components-savebutton.md#savebutton)替代。
1087
1088**注意**:此接口会将文件保存在文件管理器,而不是图库。返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
1089
1090**系统能力**:SystemCapability.FileManagement.UserFileService
1091
1092**参数:**
1093
1094| 参数名  | 类型    | 必填 | 说明                       |
1095| ------- | ------- | ---- | -------------------------- |
1096| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回photoPicker保存图片或视频文件后的结果集 |
1097
1098**示例:**
1099
1100```ts
1101import { BusinessError } from '@kit.BasicServicesKit';
1102import { common } from '@kit.AbilityKit';
1103import  { picker } from '@kit.CoreFileKit';
1104async function example06(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1105  try {
1106    let photoPicker = new picker.PhotoViewPicker(context);
1107    photoPicker.save((err: BusinessError, photoSaveResult: Array<string>) => {
1108      if (err) {
1109        console.error('PhotoViewPicker.save failed with err: ' + JSON.stringify(err));
1110        return;
1111      }
1112      console.info('PhotoViewPicker.save successfully, photoSaveResult uri: ' + JSON.stringify(photoSaveResult));
1113    });
1114  } catch (error) {
1115    let err: BusinessError = error as BusinessError;
1116    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1117  }
1118}
1119```
1120
1121## PhotoViewMIMETypes<sup>(deprecated)</sup>
1122
1123枚举,可选择的媒体文件类型。
1124
1125> **说明:**
1126>
1127> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewMIMETypes](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoviewmimetypes)替代。
1128
1129**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1130
1131**系统能力:** SystemCapability.FileManagement.UserFileService
1132
1133| 名称  |  值 |  说明 |
1134| ----- |  ---- | ---- |
1135| IMAGE_TYPE  |  'image/*' | 图片类型  |
1136| VIDEO_TYPE |  'video/*' | 视频类型  |
1137| IMAGE_VIDEO_TYPE |  '\*/*' | 图片和视频类型  |
1138
1139## PhotoSelectOptions<sup>(deprecated)</sup>
1140
1141图库选择选项。
1142
1143> **说明:**
1144>
1145> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoSelectOptions](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoselectoptions)替代。
1146
1147**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1148
1149**系统能力:** SystemCapability.FileManagement.UserFileService
1150
1151| 名称                    | 类型                | 必填 | 说明                          |
1152| ----------------------- | ------------------- | ---- | -------------------------------- |
1153| MIMEType              | [PhotoViewMIMETypes](#photoviewmimetypesdeprecated)   | 否   | 可选择的媒体文件类型,若无此参数,则默认为图片和视频类型  |
1154| maxSelectNumber       | number | 否   | 选择媒体文件数量的最大值(默认值为50,最大值为500)      |
1155
1156## PhotoSelectResult<sup>(deprecated)</sup>
1157
1158返回图库选择后的结果集。
1159
1160> **说明:**
1161>
1162> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoSelectResult](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoselectresult)替代。
1163
1164**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1165
1166**系统能力:** SystemCapability.FileManagement.UserFileService
1167
1168| 名称                    | 类型                | 必填 | 说明                           |
1169| ----------------------- | ------------------- | ----| ------------------------------ |
1170| photoUris        | Array&lt;string&gt;    | 是   | 返回图库选择后的媒体文件的uri数组,此uri数组只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。  |
1171| isOriginalPhoto        | boolean    | 是   | 返回图库选择后的媒体文件是否为原图。true为原图,false不是原图。  |
1172
1173## PhotoSaveOptions<sup>(deprecated)</sup>
1174
1175图片或视频的保存选项。
1176
1177> **说明:**
1178>
1179> 从 API version 9开始支持,从API version 12开始废弃。无替代接口和替代方法。
1180
1181**系统能力:** SystemCapability.FileManagement.UserFileService
1182
1183| 名称                    | 类型                | 必填 |  说明                           |
1184| ----------------------- | ------------------- | ---- | ---------------------------- |
1185| newFileNames              | Array&lt;string&gt;    | 否  | 拉起photoPicker进行保存图片或视频资源的文件名,若无此参数,则默认需要用户自行输入 |