From c3ffc89011d6a756148bd2b06cded4c5f9192699 Mon Sep 17 00:00:00 2001 From: Annie_wang Date: Wed, 6 Sep 2023 09:13:14 +0800 Subject: [PATCH] update docs Signed-off-by: Annie_wang --- .../file-management/save-user-file.md | 67 +++++++++-------- .../file-management/select-user-file.md | 74 ++++++++++--------- 2 files changed, 78 insertions(+), 63 deletions(-) diff --git a/en/application-dev/file-management/save-user-file.md b/en/application-dev/file-management/save-user-file.md index a5cc3306c6..07ef6bc424 100644 --- a/en/application-dev/file-management/save-user-file.md +++ b/en/application-dev/file-management/save-user-file.md @@ -18,37 +18,41 @@ For example, select an image from **Gallery** and save it to the file manager. import fs from '@ohos.file.fs'; import photoAccessHelper from '@ohos.file.photoAccessHelper'; import dataSharePredicates from '@ohos.data.dataSharePredicates'; + import common from '@ohos.app.ability.common'; + import image from '@ohos.multimedia.image'; + import { BusinessError } from '@ohos.base'; ``` 2. Obtain the thumbnail of the first image on the device. Before performing this operation, ensure that at least one image exists on the device. ```ts - const context = getContext(this); - let photoAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); + let context = getContext(this) as common.UIAbilityContext; + let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); - let pixelmapArrayBuffer; - async getPixelmap() { + let pixelmapArrayBuffer: ArrayBuffer; + async function getPixelmap() { try { let predicates = new dataSharePredicates.DataSharePredicates(); - let fetchOption = { + let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; - let fetchResult = await photoAccessHelper.getAssets(fetchOption); + let fetchResult = await phAccessHelper.getAssets(fetchOption); console.info('[picker] getThumbnail fetchResult: ' + fetchResult); const asset = await fetchResult.getFirstObject(); console.info('[picker] getThumbnail asset displayName = ', asset.displayName); - asset.getThumbnail().then((pixelMap) => { + asset.getThumbnail().then((pixelMap: image.PixelMap) => { let pixelBytesNumber = pixelMap.getPixelBytesNumber(); const readBuffer = new ArrayBuffer(pixelBytesNumber); pixelMap.readPixelsToBuffer(readBuffer).then(() => { pixelmapArrayBuffer = readBuffer; }) - }).catch((err) => { - console.error('[picker] getThumbnail failed with error: ' + err); + }).catch((err: BusinessError) => { + console.error('[picker] getThumbnail failed with error: ' + JSON.stringify(err)); }); } catch (error) { - console.error('[picker] getThumbnail error = ' + error); + let err: BusinessError = error as BusinessError; + console.error('[picker] getThumbnail error = ' + JSON.stringify(err)); } } ``` @@ -58,8 +62,8 @@ For example, select an image from **Gallery** and save it to the file manager. The permission on the URI returned by **save()** is read/write. Further operations on the file can be performed based on the URI in the result set. Note that the URI cannot be directly used in the **picker** callback to open a file. You need to define a global variable to save the URI and use a button to trigger file opening. ```ts - let uri:string; - async photoViewPickerSave() { + let uris: Array; + async function photoViewPickerSave() { try { const photoSaveOptions = new picker.PhotoSaveOptions(); // Create a photoSaveOptions instance. photoSaveOptions.newFileNames = ["PhotoViewPicker01.png"]; // (Optional) Name of the file to be saved. The file name in the square brackets can be customized and must be unique. If the file name already exists on the device, change the file name. Otherwise, an error will be returned. @@ -68,15 +72,16 @@ For example, select an image from **Gallery** and save it to the file manager. try { let photoSaveResult = await photoViewPicker.save(photoSaveOptions); if (photoSaveResult != undefined) { - console.info("[picker] photoViewPickerSave photoSaveResult = " + JSON.stringify(photoSaveResult)); - this.uri = photoSaveResult[0]; - console.info('photoViewPicker.save to file succeed and uri is:' + photoSaveResult[0]); + uris = photoSaveResult; + console.info('photoViewPicker.save to file succeed and uris are:' + uris); } - } catch (err) { + } catch (error) { + let err: BusinessError = error as BusinessError; console.error(`[picker] Invoke photoViewPicker.save failed, code is ${err.code}, message is ${err.message}`); } } catch (error) { - console.info("[picker] photoViewPickerSave error = " + error); + let err: BusinessError = error as BusinessError; + console.info("[picker] photoViewPickerSave error = " + JSON.stringify(err)); } } ``` @@ -86,14 +91,15 @@ For example, select an image from **Gallery** and save it to the file manager. Then, use [fs.write](../reference/apis/js-apis-file-fs.md#fswrite) to modify the file based on the FD, and close the FD after the modification is complete. ```ts - async writeOnly(uri) { + async function writeOnly(uri: string) { try { let file = fs.openSync(uri, fs.OpenMode.WRITE_ONLY); let writeLen = await fs.write(file.fd, pixelmapArrayBuffer); fs.closeSync(file); console.info("[picker] writeOnly writeLen = " + writeLen); } catch (error) { - console.info("[picker] writeOnly error: " + error); + let err: BusinessError = error as BusinessError; + console.info("[picker] writeOnly error: " + JSON.stringify(err)); } } ``` @@ -105,6 +111,7 @@ For example, select an image from **Gallery** and save it to the file manager. ```ts import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; + import { BusinessError } from '@ohos.base'; ``` 2. Create a **documentSaveOptions** instance. @@ -112,6 +119,7 @@ For example, select an image from **Gallery** and save it to the file manager. ```ts const documentSaveOptions = new picker.DocumentSaveOptions(); // Create a documentSaveOptions instance. documentSaveOptions.newFileNames = ["DocumentViewPicker01.txt"]; // (Optional) Set the name of the document to save. + documentSaveOptions.fileSuffixChoices = ['.png', '.txt', '.mp4']; // (Optional) Types of the documents to save. ``` 3. Create a **documentViewPicker** instance, and call [save()](../reference/apis/js-apis-file-picker.md#save-3) to open the **FilePicker** page to save the document. After the user selects the destination folder, the document is saved and the URI of the document saved is returned. @@ -119,12 +127,12 @@ For example, select an image from **Gallery** and save it to the file manager. The permission on the URI returned by **save()** is read/write. Further operations on the file can be performed based on the URI in the result set. Note that the URI cannot be directly used in the **picker** callback to open a file. You need to define a global variable to save the URI and use a button to trigger file opening. ```ts - let uri = null; + let uris: Array; const documentViewPicker = new picker.DocumentViewPicker(); // Create a documentViewPicker instance. - documentViewPicker.save(documentSaveOptions).then((documentSaveResult) => { - uri = documentSaveResult[0]; - console.info('documentViewPicker.save to file succeed and uri is:' + uri); - }).catch((err) => { + documentViewPicker.save(documentSaveOptions).then((documentSaveResult: Array) => { + uris = documentSaveResult; + console.info('documentViewPicker.save to file succeed and uris are:' + uris); + }).catch((err: BusinessError) => { console.error(`Invoke documentViewPicker.save failed, code is ${err.code}, message is ${err.message}`); }) ``` @@ -151,6 +159,7 @@ For example, select an image from **Gallery** and save it to the file manager. ```ts import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; + import { BusinessError } from '@ohos.base'; ``` 2. Create an **audioSaveOptions** instance. @@ -160,17 +169,17 @@ For example, select an image from **Gallery** and save it to the file manager. audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3']; // (Optional) Set the name of the audio file to save. ``` -3. Create an **audioViewPicker** instance, and call [save()](../reference/apis/js-apis-file-picker.md#save-6) to open the **FilePicker** page to save the file. After the user selects the destination folder, the audio file is saved and the URI of the file saved is returned. +3. Create an **audioViewPicker** instance, and call [save()](../reference/apis/js-apis-file-picker.md#save-6) to open the **FilePicker** page to save the file. After the user selects the destination folder, the audio file is saved and the URI of the document saved is returned. The permission on the URI returned by **save()** is read/write. Further operations on the file can be performed based on the URI in the result set. Note that the URI cannot be directly used in the **picker** callback to open a file. You need to define a global variable to save the URI and use a button to trigger file opening. ```ts - let uri = null; + let uri: string; const audioViewPicker = new picker.AudioViewPicker(); - audioViewPicker.save(audioSaveOptions).then((audioSelectResult) => { + audioViewPicker.save(audioSaveOptions).then((audioSelectResult: Array) => { uri = audioSelectResult[0]; console.info('audioViewPicker.save to file succeed and uri is:' + uri); - }).catch((err) => { + }).catch((err: BusinessError) => { console.error(`Invoke audioViewPicker.save failed, code is ${err.code}, message is ${err.message}`); }) ``` @@ -182,7 +191,7 @@ For example, select an image from **Gallery** and save it to the file manager. console.info('file fd: ' + file.fd); ``` -5. Use [fs.writeSync()](../reference/apis/js-apis-file-fs.md#writesync) to edit the file based on the FD, and then close the FD. +5. Use [fs.writeSync()](../reference/apis/js-apis-file-fs.md#writesync) to edit the document based on the FD, and then close the FD. ```ts let writeLen = fs.writeSync(file.fd, 'hello, world'); diff --git a/en/application-dev/file-management/select-user-file.md b/en/application-dev/file-management/select-user-file.md index 041d20f308..01f074fff6 100644 --- a/en/application-dev/file-management/select-user-file.md +++ b/en/application-dev/file-management/select-user-file.md @@ -17,6 +17,7 @@ The **FilePicker** provides the following interfaces by file type: ```ts import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; + import { BusinessError } from '@ohos.base'; ``` 2. Create a **photoSelectOptions** instance. @@ -38,12 +39,12 @@ The **FilePicker** provides the following interfaces by file type: The permission on the URIs returned by **select()** is read-only. Further file operations can be performed based on the URIs in the **PhotoSelectResult**. Note that the URI cannot be directly used in the **picker** callback to open a file. You need to define a global variable to save the URI and use a button to trigger file opening. ```ts - let uri = null; + let uris: Array; 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) => { + photoViewPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => { + uris = photoSelectResult.photoUris; + console.info('photoViewPicker.select to file succeed and uris are:' + uris); + }).catch((err: BusinessError) => { console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) ``` @@ -71,12 +72,17 @@ The **FilePicker** provides the following interfaces by file type: ```ts import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; + import Want from '@ohos.app.ability.Want'; + import { BusinessError } from '@ohos.base'; ``` 2. Create a **documentSelectOptions** instance. ```ts const documentSelectOptions = new picker.DocumentSelectOptions(); + documentSelectOptions.maxSelectNumber = 5; // (Optional) Maximum number of documents to select. + documentSelectOptions.defaultFilePathUri = "file://docs/storage/Users/currentUser/test"; // (Optional) Path of the file or directory to select. + documentSelectOptions.fileSuffixFilters = ['.png', '.txt', '.mp4']; // (Optional) File name extensions of the documents to select. ``` 3. Create a **documentViewPicker** instance, and call [**select()**](../reference/apis/js-apis-file-picker.md#select-3) to open the **FilePicker** page for the user to select documents. After the documents are selected, a result set containing the file URIs is returned. @@ -85,17 +91,13 @@ The **FilePicker** provides the following interfaces by file type: For example, you can use [file management APIs](../reference/apis/js-apis-file-fs.md) to obtain file attributes, such as the file size, access time, and last modification time, based on the URI. If you need to obtain the file name, use [startAbilityForResult](../../application-dev/application-models/uiability-intra-device-interaction.md). - > **NOTE** - > - > Currently, **DocumentSelectOptions** is not configurable. By default, all types of user files are selected. - ```ts - let uri = null; + let uris: Array; const documentViewPicker = new picker.DocumentViewPicker(); // Create a documentViewPicker instance. - documentViewPicker.select(documentSelectOptions).then((documentSelectResult) => { - uri = documentSelectResult[0]; - console.info('documentViewPicker.select to file succeed and uri is:' + uri); - }).catch((err) => { + documentViewPicker.select(documentSelectOptions).then((documentSelectResult: Array) => { + uris = documentSelectResult; + console.info('documentViewPicker.select to file succeed and uris are:' + uris); + }).catch((err: BusinessError) => { console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) ``` @@ -105,24 +107,27 @@ The **FilePicker** provides the following interfaces by file type: > Currently, **DocumentSelectOptions** cannot be used to obtain the file name. To obtain the file name, use **startAbilityForResult()**. ```ts - let config = { - action: 'ohos.want.action.OPEN_FILE', - parameters: { - startMode: 'choose', + async function example() { + let config: Want = { + action: 'ohos.want.action.OPEN_FILE', + parameters: { + startMode: 'choose', + } } - } - try { - let result = await context.startAbilityForResult(config, {windowMode: 1}); - if (result.resultCode !== 0) { - console.error(`documentViewPicker.select failed, code is ${result.resultCode}, message is ${result.want.parameters.message}`); - return; + try { + let result = await context.startAbilityForResult(config, {windowMode: 1}); + if (result.resultCode !== 0) { + console.error(`documentViewPicker.select failed, code is ${result.resultCode}, message is ${result.want.parameters.message}`); + return; + } + // Obtain the URI of the document. + let select_item_list = result.want.parameters.select_item_list; + // Obtain the name of the document. + let file_name_list = result.want.parameters.file_name_list; + } catch (error) { + let err: BusinessError = error as BusinessError; + console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`); } - // Obtain the URI of the document. - let select_item_list = result.want.parameters.select_item_list; - // Obtain the name of the document. - let file_name_list = result.want.parameters.file_name_list; - } catch (err) { - console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`); } ``` @@ -150,6 +155,7 @@ The **FilePicker** provides the following interfaces by file type: ```ts import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; + import { BusinessError } from '@ohos.base'; ``` 2. Create an **audioSelectOptions** instance. @@ -169,12 +175,12 @@ The **FilePicker** provides the following interfaces by file type: > Currently, **AudioSelectOptions** is not configurable. By default, all types of user files are selected. ```ts - let uri = null; + let uri: string; const audioViewPicker = new picker.AudioViewPicker(); - audioViewPicker.select(audioSelectOptions).then(audioSelectResult => { - uri = audioSelectOptions[0]; + audioViewPicker.select(audioSelectOptions).then((audioSelectResult: Array) => { + uri = audioSelectResult[0]; console.info('audioViewPicker.select to file succeed and uri is:' + uri); - }).catch((err) => { + }).catch((err: BusinessError) => { console.error(`Invoke audioViewPicker.select failed, code is ${err.code}, message is ${err.message}`); }) ``` -- GitLab