save-user-file.md 5.4 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10
# 保存用户文件

在从网络下载文件到本地、或将已有用户文件另存为新的文件路径等场景下,需要使用FilePicker提供的保存用户文件的能力。

对音频、图片、视频、文档类文件的保存操作类似,均通过调用对应picker的save()接口并传入对应的saveOptions来实现。


## 保存图片或视频类文件

1. 导入选择器模块。
Z
zengyawen 已提交
11

Z
zengyawen 已提交
12 13 14 15 16
   ```ts
   import picker from '@ohos.file.picker';
   ```

2. 创建图库保存选项实例。
Z
zengyawen 已提交
17

Z
zengyawen 已提交
18 19 20 21 22 23 24
   ```ts
   const photoSaveOptions = new picker.PhotoSaveOptions(); // 创建文件管理器保存选项实例
   photoSaveOptions.newFileNames = ["PhotoViewPicker01.jpg"]; // 保存文件名(可选)
   ```

3. 创建图库选择器实例,调用[save()](../reference/apis/js-apis-file-picker.md#save)接口拉起FilePicker界面进行文件保存。
     用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
Z
zengyawen 已提交
25

Z
zengyawen 已提交
26
   ```ts
27
   let uri = null;
Z
zengyawen 已提交
28
   const photoViewPicker = new picker.PhotoViewPicker();
29 30 31 32 33 34 35
   photoViewPicker.save(photoSaveOptions).then((photoSaveResult) => {
     uri = photoSaveResult[0];
   }).catch((err) => {
     console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`);
   })
   ```

36
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。
37 38 39 40 41 42

   ```ts
   let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
   console.info('file fd: ' + file.fd);
   ```

43
5. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。
44 45 46 47 48

   ```ts
   let writeLen = fs.writeSync(file.fd, 'hello, world');
   console.info('write data to file succeed and size is:' + writeLen);
   fs.closeSync(file);
Z
zengyawen 已提交
49 50 51 52 53
   ```

## 保存文档类文件

1. 导入选择器模块。
Z
zengyawen 已提交
54

Z
zengyawen 已提交
55 56 57 58 59
   ```ts
   import picker from '@ohos.file.picker';
   ```

2. 创建文档保存选项实例。
Z
zengyawen 已提交
60

Z
zengyawen 已提交
61 62 63 64 65 66 67 68 69 70 71 72 73
   ```ts
   const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器选项实例
   documentSaveOptions.newFileNames = ["DocumentViewPicker01.txt"]; // 保存文件名(可选)
   ```

3. 创建文档选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-3)接口拉起FilePicker界面进行文件保存。
   用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。

   > **说明:**
   >
   > 目前DocumentSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。

   ```ts
74
   let uri = null;
Z
zengyawen 已提交
75
   const documentViewPicker = new picker.DocumentViewPicker(); // 创建文件选择器实例
76 77 78 79 80 81 82
   documentViewPicker.save(documentSaveOptions).then((documentSaveResult) => {
     uri = documentSaveResult[0];
   }).catch((err) => {
     console.error(`Invoke documentPicker.save failed, code is ${err.code}, message is ${err.message}`);
   })
   ```

83
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。
84 85 86 87 88 89

   ```ts
   let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
   console.info('file fd: ' + file.fd);
   ```

90
5. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。
91 92 93 94 95

   ```ts
   let writeLen = fs.writeSync(file.fd, 'hello, world');
   console.info('write data to file succeed and size is:' + writeLen);
   fs.closeSync(file);
Z
zengyawen 已提交
96 97 98 99 100
   ```

## 保存音频类文件

1. 导入选择器模块。
Z
zengyawen 已提交
101

Z
zengyawen 已提交
102 103 104 105 106
   ```ts
   import picker from '@ohos.file.picker';
   ```

2. 创建音频保存选项实例。
Z
zengyawen 已提交
107

Z
zengyawen 已提交
108 109 110 111 112 113 114 115 116 117
   ```ts
   const audioSaveOptions = new picker.AudioSaveOptions(); // 创建文件管理器选项实例
   audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3']; // 保存文件名(可选)
   ```

3. 创建音频选择器实例。调用[save()](../reference/apis/js-apis-file-picker.md#save-6)接口拉起FilePicker界面进行文件保存。
     用户选择目标文件夹,用户选择与文件类型相对应的文件夹,即可完成文件保存操作。保存成功后,返回保存文档的URI。
   > **说明:**
   >
   > 目前AudioSelectOptions不支持参数配置,默认可以选择所有类型的用户文件。
Z
zengyawen 已提交
118

Z
zengyawen 已提交
119
   ```ts
120
   let uri = null;
Z
zengyawen 已提交
121
   const audioViewPicker = new picker.AudioViewPicker();
122 123 124 125 126 127 128
   audioViewPicker.save(audioSaveOptions).then((audioSelectResult) => {
     uri = audioSelectResult[0];
   }).catch((err) => {
     console.error(`Invoke audioPicker.select failed, code is ${err.code}, message is ${err.message}`);
   })
   ```

129
4. 待界面从FilePicker返回后,在其他函数中使用[fs.openSync](../reference/apis/js-apis-file-fs.md#fsopensync)接口,通过uri打开这个文件得到fd。
130 131 132 133 134 135

   ```ts
   let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
   console.info('file fd: ' + file.fd);
   ```

136
5. 通过fd使用[fs.writeSync](../reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改,编辑修改完成后关闭fd。
137 138 139 140 141

   ```ts
   let writeLen = fs.writeSync(file.fd, 'hello, world');
   console.info('write data to file succeed and size is:' + writeLen);
   fs.closeSync(file);
Z
zengyawen 已提交
142
   ```
143