Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
ce5698a2
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
ce5698a2
编写于
11月 24, 2022
作者:
O
openharmony_ci
提交者:
Gitee
11月 24, 2022
浏览文件
操作
浏览文件
下载
差异文件
!11757 modify js-apis-userFileManager.md warning
Merge pull request !11757 from 胡伟奇/modify_userFileManager
上级
4f3acce5
ac9f29f6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
63 addition
and
78 deletion
+63
-78
zh-cn/application-dev/reference/apis/js-apis-userFileManager.md
...application-dev/reference/apis/js-apis-userFileManager.md
+63
-78
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-userFileManager.md
浏览文件 @
ce5698a2
...
@@ -41,30 +41,6 @@ const context = getContext(this);
...
@@ -41,30 +41,6 @@ const context = getContext(this);
let
mgr
=
userFileManager
.
getUserFileMgr
(
context
);
let
mgr
=
userFileManager
.
getUserFileMgr
(
context
);
```
```
## userFileManager.getUserFileMgr
getUserFileMgr(): UserFileManager
获取用户数据管理模块的实例,用于访问和修改用户等用户公共媒体数据信息(如音频、视频、图片、文档等)。
**模型约束:**
此接口仅可在FA模型下使用。
> **说明**: 推荐使用Stage模型接口[UserFileManager.getUserFileMgr](#userfilemanagergetuserfilemgr)。
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**返回值:**
| 类型 | 说明 |
| ----------------------------- | :--------- |
|
[
UserFileManager
](
#userfilemanager
)
| 媒体库实例 |
**示例:**
```
ts
let
mgr
=
userFileManager
.
getUserFileMgr
();
```
## UserFileManager
## UserFileManager
### getPhotoAssets
### getPhotoAssets
...
@@ -194,7 +170,8 @@ async function example() {
...
@@ -194,7 +170,8 @@ async function example() {
};
};
let
albums
=
await
mgr
.
getPhotoAlbums
(
fetchOptions
)
let
albums
=
await
mgr
.
getPhotoAlbums
(
fetchOptions
)
let
album
=
await
albums
.
getFirstObject
()
let
album
=
await
albums
.
getFirstObject
()
mgr
.
createPhotoAsset
(
'
testFile.jpg
'
,
album
.
albumUri
,
(
err
,
fileAsset
)
=>
{
let
testFileName
=
"
testFile
"
+
Date
.
now
()
+
"
.jpg
"
;
mgr
.
createPhotoAsset
(
testFileName
,
album
.
albumUri
,
(
err
,
fileAsset
)
=>
{
if
(
fileAsset
!=
undefined
)
{
if
(
fileAsset
!=
undefined
)
{
console
.
info
(
'
createPhotoAsset file displayName
'
+
fileAsset
.
displayName
);
console
.
info
(
'
createPhotoAsset file displayName
'
+
fileAsset
.
displayName
);
console
.
info
(
'
createPhotoAsset successfully
'
);
console
.
info
(
'
createPhotoAsset successfully
'
);
...
@@ -227,7 +204,8 @@ createPhotoAsset(displayName: string, callback: AsyncCallback<FileAsset>):
...
@@ -227,7 +204,8 @@ createPhotoAsset(displayName: string, callback: AsyncCallback<FileAsset>):
```
ts
```
ts
async
function
example
()
{
async
function
example
()
{
console
.
info
(
'
createPhotoAssetDemo
'
)
console
.
info
(
'
createPhotoAssetDemo
'
)
mgr
.
createPhotoAsset
(
'
testFile.jpg
'
,
(
err
,
fileAsset
)
=>
{
let
testFileName
=
"
testFile
"
+
Date
.
now
()
+
"
.jpg
"
;
mgr
.
createPhotoAsset
(
testFileName
,
(
err
,
fileAsset
)
=>
{
if
(
fileAsset
!=
undefined
)
{
if
(
fileAsset
!=
undefined
)
{
console
.
info
(
'
createPhotoAsset file displayName
'
+
fileAsset
.
displayName
);
console
.
info
(
'
createPhotoAsset file displayName
'
+
fileAsset
.
displayName
);
console
.
info
(
'
createPhotoAsset successfully
'
);
console
.
info
(
'
createPhotoAsset successfully
'
);
...
@@ -240,7 +218,7 @@ async function example() {
...
@@ -240,7 +218,7 @@ async function example() {
### createPhotoAsset
### createPhotoAsset
createPhotoAsset(displayName: string, albumUri
?
: string): Promise
<
FileAsset
>
;
createPhotoAsset(displayName: string, albumUri
?
: string): Promise
<
FileAsset
>
;
创建图片或视频资源,使用Promise方式返回结果。
创建图片或视频资源,使用Promise方式返回结果。
...
@@ -267,7 +245,8 @@ createPhotoAsset(displayName: string, albumUri?: string): Promise<FileAsset
...
@@ -267,7 +245,8 @@ createPhotoAsset(displayName: string, albumUri?: string): Promise<FileAsset
async
function
example
()
{
async
function
example
()
{
console
.
info
(
'
createPhotoAssetDemo
'
)
console
.
info
(
'
createPhotoAssetDemo
'
)
try
{
try
{
let
fileAsset
=
await
mgr
.
createPhotoAsset
(
'
testFile.jpg
'
)
let
testFileName
=
"
testFile
"
+
Date
.
now
()
+
"
.jpg
"
;
let
fileAsset
=
await
mgr
.
createPhotoAsset
(
testFileName
)
console
.
info
(
'
createPhotoAsset file displayName
'
+
fileAsset
.
displayName
);
console
.
info
(
'
createPhotoAsset file displayName
'
+
fileAsset
.
displayName
);
console
.
info
(
'
createPhotoAsset successfully
'
);
console
.
info
(
'
createPhotoAsset successfully
'
);
}
catch
(
err
)
{
}
catch
(
err
)
{
...
@@ -1110,7 +1089,7 @@ open(mode: string, callback: AsyncCallback<number>): void
...
@@ -1110,7 +1089,7 @@ open(mode: string, callback: AsyncCallback<number>): void
**注意**
:当前写操作是互斥的操作,写操作完成后需要调用close进行释放
**注意**
:当前写操作是互斥的操作,写操作完成后需要调用close进行释放
**需要权限**
:ohos.permission.READ_IMAGEVIDEO 或 ohos.permission.READ_AUDIO 或 ohos.permission.WRITE_
MEDIA 或 ohos.permission.WRITE_
IMAGEVIDEO 或 ohos.permission.WRITE_AUDIO
**需要权限**
:ohos.permission.READ_IMAGEVIDEO 或 ohos.permission.READ_AUDIO 或 ohos.permission.WRITE_IMAGEVIDEO 或 ohos.permission.WRITE_AUDIO
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -1127,7 +1106,8 @@ open(mode: string, callback: AsyncCallback<number>): void
...
@@ -1127,7 +1106,8 @@ open(mode: string, callback: AsyncCallback<number>): void
```
ts
```
ts
async
function
example
()
{
async
function
example
()
{
console
.
info
(
'
openDemo
'
)
console
.
info
(
'
openDemo
'
)
const
fileAsset
=
await
mgr
.
createPhotoAsset
(
"
image00003.jpg
"
);
let
testFileName
=
"
testFile
"
+
Date
.
now
()
+
"
.jpg
"
;
const
fileAsset
=
await
mgr
.
createPhotoAsset
(
testFileName
);
fileAsset
.
open
(
'
rw
'
,
(
err
,
fd
)
=>
{
fileAsset
.
open
(
'
rw
'
,
(
err
,
fd
)
=>
{
if
(
fd
!=
undefined
)
{
if
(
fd
!=
undefined
)
{
console
.
info
(
'
File fd
'
+
fd
);
console
.
info
(
'
File fd
'
+
fd
);
...
@@ -1147,7 +1127,7 @@ open(mode: string): Promise<number>
...
@@ -1147,7 +1127,7 @@ open(mode: string): Promise<number>
**注意**
:当前写操作是互斥的操作,写操作完成后需要调用close进行释放
**注意**
:当前写操作是互斥的操作,写操作完成后需要调用close进行释放
**需要权限**
:ohos.permission.READ_IMAGEVIDEO 或 ohos.permission.READ_AUDIO 或 ohos.permission.WRITE_
MEDIA 或 ohos.permission.WRITE_
IMAGEVIDEO 或 ohos.permission.WRITE_AUDIO
**需要权限**
:ohos.permission.READ_IMAGEVIDEO 或 ohos.permission.READ_AUDIO 或 ohos.permission.WRITE_IMAGEVIDEO 或 ohos.permission.WRITE_AUDIO
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -1169,7 +1149,8 @@ open(mode: string): Promise<number>
...
@@ -1169,7 +1149,8 @@ open(mode: string): Promise<number>
async
function
example
()
{
async
function
example
()
{
console
.
info
(
'
openDemo
'
)
console
.
info
(
'
openDemo
'
)
try
{
try
{
const
fileAsset
=
await
mgr
.
createPhotoAsset
(
"
image00003.jpg
"
);
let
testFileName
=
"
testFile
"
+
Date
.
now
()
+
"
.jpg
"
;
const
fileAsset
=
await
mgr
.
createPhotoAsset
(
testFileName
);
let
fd
=
await
fileAsset
.
open
(
'
rw
'
)
let
fd
=
await
fileAsset
.
open
(
'
rw
'
)
if
(
fd
!=
undefined
)
{
if
(
fd
!=
undefined
)
{
console
.
info
(
'
File fd
'
+
fd
);
console
.
info
(
'
File fd
'
+
fd
);
...
@@ -1316,7 +1297,7 @@ async function example() {
...
@@ -1316,7 +1297,7 @@ async function example() {
### getThumbnail
### getThumbnail
getThumbnail(size: Size, callback: AsyncCallback
<
image.PixelMap
>
): void
getThumbnail(size:
image.
Size, callback: AsyncCallback
<
image.PixelMap
>
): void
获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。
获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。
...
@@ -1359,7 +1340,7 @@ async function example() {
...
@@ -1359,7 +1340,7 @@ async function example() {
### getThumbnail
### getThumbnail
getThumbnail(size?: Size): Promise
<
image.PixelMap
>
getThumbnail(size?:
image.
Size): Promise
<
image.PixelMap
>
获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。
获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。
...
@@ -1581,9 +1562,13 @@ async function example() {
...
@@ -1581,9 +1562,13 @@ async function example() {
fetchColumns
:
[],
fetchColumns
:
[],
predicates
:
predicates
predicates
:
predicates
};
};
let
fetchResult
=
await
mgr
.
getPhotoAssets
(
fetchOption
);
try
{
await
fetchResult
.
close
();
let
fetchResult
=
await
mgr
.
getPhotoAssets
(
fetchOption
);
console
.
info
(
'
close succeed.
'
)
await
fetchResult
.
close
();
console
.
info
(
'
close succeed.
'
);
}
catch
(
err
)
{
console
.
info
(
'
close fail. message =
'
+
err
);
}
}
}
```
```
...
@@ -1898,7 +1883,7 @@ getPhotoAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<
...
@@ -1898,7 +1883,7 @@ getPhotoAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<
获取相册中的文件。该方法使用callback形式来返回文件
获取相册中的文件。该方法使用callback形式来返回文件
**需要权限**
:ohos.permission.
WRITE
_IMAGEVIDEO
**需要权限**
:ohos.permission.
READ
_IMAGEVIDEO
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -1942,7 +1927,7 @@ getPhotoAssets(options: FetchOptions): Promise<FetchResult<FileAsset>&g
...
@@ -1942,7 +1927,7 @@ getPhotoAssets(options: FetchOptions): Promise<FetchResult<FileAsset>&g
获取相册中的文件。该方法使用Promise来返回文件
获取相册中的文件。该方法使用Promise来返回文件
**需要权限**
:ohos.permission.
WRITE
_IMAGEVIDEO
**需要权限**
:ohos.permission.
READ
_IMAGEVIDEO
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -2082,7 +2067,7 @@ getPhotoAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<
...
@@ -2082,7 +2067,7 @@ getPhotoAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<
获取系统相册中的文件。该方法使用callback形式来返回文件
获取系统相册中的文件。该方法使用callback形式来返回文件
**需要权限**
:ohos.permission.
WRITE
_IMAGEVIDEO
**需要权限**
:ohos.permission.
READ
_IMAGEVIDEO
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -2124,7 +2109,7 @@ getPhotoAssets(options: FetchOptions): Promise<FetchResult<FileAsset>&g
...
@@ -2124,7 +2109,7 @@ getPhotoAssets(options: FetchOptions): Promise<FetchResult<FileAsset>&g
获取系统相册中的文件。该方法使用Promise来返回文件
获取系统相册中的文件。该方法使用Promise来返回文件
**需要权限**
:ohos.permission.
WRITE
_IMAGEVIDEO
**需要权限**
:ohos.permission.
READ
_IMAGEVIDEO
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -2255,7 +2240,7 @@ recover(uri: string, callback: AsyncCallback<void>): void;
...
@@ -2255,7 +2240,7 @@ recover(uri: string, callback: AsyncCallback<void>): void;
恢复系统相册中的文件
恢复系统相册中的文件
**需要权限**
:ohos.permission.
WRITE_IMAGEVIDE
O
**需要权限**
:ohos.permission.
READ_IMAGEVIDEO 和 ohos.permission.WRITE_IMAGEVIDEO 或 ohos.permission.READ_AUDIO 和 ohos.permission.WRITE_AUDI
O
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -2298,7 +2283,7 @@ recover(uri: string): Promise<void>;
...
@@ -2298,7 +2283,7 @@ recover(uri: string): Promise<void>;
恢复系统相册中的文件
恢复系统相册中的文件
**需要权限**
:ohos.permission.
WRITE_IMAGEVIDE
O
**需要权限**
:ohos.permission.
READ_IMAGEVIDEO 和 ohos.permission.WRITE_IMAGEVIDEO 或 ohos.permission.READ_AUDIO 和 ohos.permission.WRITE_AUDI
O
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
**系统能力**
:SystemCapability.FileManagement.UserFileManager.Core
...
@@ -2343,28 +2328,28 @@ async function example() {
...
@@ -2343,28 +2328,28 @@ async function example() {
成员类型。
成员类型。
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.
Distributed
Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 类型 |
| 名称 | 类型 |
可读 | 可写 | 说明 |
| ----- | ---- |
| ----- | ---- |
---- | ---- | ---- |
| number | number |
| number | number |
是 | 是 | number类型 |
| string | string |
| string | string |
是 | 是 | string类型 |
| boolean | boolean |
| boolean | boolean |
是 | 是 | boolean类型 |
## ChangeEvent
## ChangeEvent
变更监听的媒体文件类型。
变更监听的媒体文件类型。
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.
Distributed
Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 说明 |
| 名称 |
类型 | 可读 | 可写
说明 |
| ----- | ---- |
| ----- | ---- |
---- | ---- | ---- |
| deviceChange | 设备 |
| deviceChange |
string | 是 | 是 |
设备 |
| albumChange | 相册 |
| albumChange |
string | 是 | 是 |
相册 |
| imageChange | 图片 |
| imageChange |
string | 是 | 是 |
图片 |
| audioChange | 音频 |
| audioChange |
string | 是 | 是 |
音频 |
| videoChange | 视频 |
| videoChange |
string | 是 | 是 |
视频 |
| remoteFileChange | 远程文件 |
| remoteFileChange |
string | 是 | 是 |
远程文件 |
## PeerInfo
## PeerInfo
...
@@ -2385,11 +2370,11 @@ async function example() {
...
@@ -2385,11 +2370,11 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 说明 |
| 名称 |
值 |
说明 |
| ----- | ---- |
| ----- | ---- |
---- |
| IMAGE | 图片 |
| IMAGE |
1 |
图片 |
| VIDEO | 视频 |
| VIDEO |
2 |
视频 |
| AUDIO | 音频 |
| AUDIO |
3 |
音频 |
## PrivateAlbumType
## PrivateAlbumType
...
@@ -2397,10 +2382,10 @@ async function example() {
...
@@ -2397,10 +2382,10 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 说明 |
| 名称 |
值 |
说明 |
| ----- | ----
|
| ----- | ----
| ----
|
| TYPE_FAVORITE | 收藏夹相册 |
| TYPE_FAVORITE |
0 |
收藏夹相册 |
| TYPE_TRASH | 回收站相册 |
| TYPE_TRASH |
1 |
回收站相册 |
...
@@ -2410,7 +2395,7 @@ async function example() {
...
@@ -2410,7 +2395,7 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 |
默认
值 | 说明 |
| 名称 |
值 | 说明 |
| ------------- | ------------------- | ---------------------------------------------------------- |
| ------------- | ------------------- | ---------------------------------------------------------- |
| URI | uri | 文件uri |
| URI | uri | 文件uri |
| DISPLAY_NAME | display_name | 显示名字 |
| DISPLAY_NAME | display_name | 显示名字 |
...
@@ -2428,7 +2413,7 @@ async function example() {
...
@@ -2428,7 +2413,7 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 |
默认
值 | 说明 |
| 名称 | 值 | 说明 |
| ------------- | ------------------- | ---------------------------------------------------------- |
| ------------- | ------------------- | ---------------------------------------------------------- |
| URI | uri | 文件uri |
| URI | uri | 文件uri |
| FILE_TYPE | file_type | 媒体文件类型 |
| FILE_TYPE | file_type | 媒体文件类型 |
...
@@ -2449,7 +2434,7 @@ async function example() {
...
@@ -2449,7 +2434,7 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 |
默认
值 | 说明 |
| 名称 | 值 | 说明 |
| ------------- | ------------------- | ---------------------------------------------------------- |
| ------------- | ------------------- | ---------------------------------------------------------- |
| URI | uri | 相册uri |
| URI | uri | 相册uri |
| FILE_TYPE | file_type | 媒体文件类型 |
| FILE_TYPE | file_type | 媒体文件类型 |
...
@@ -2464,10 +2449,10 @@ async function example() {
...
@@ -2464,10 +2449,10 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 类型 |
必填
| 说明 |
| 名称 | 类型 |
可读 | 可写
| 说明 |
| ---------------------- | ------------------- | ---- |------------------------------------------------ |
| ---------------------- | ------------------- | ---- |----
| ----
-------------------------------------------- |
| fetchColumns | Array
<
string
>
| 是 | 检索条件,指定列名查询,如果该参数为空时默认查询uri、name、fileType。示例:
<br
/>
fetchColumns: "uri"|
| fetchColumns | Array
<
string
>
| 是 |
是 |
检索条件,指定列名查询,如果该参数为空时默认查询uri、name、fileType。示例:
<br
/>
fetchColumns: "uri"|
| predicates |
[
dataSharePredicates.DataSharePredicates
](
js-apis-data-dataSharePredicates.md
)
| 是 | 谓词查询,显示过滤条件 |
| predicates |
[
dataSharePredicates.DataSharePredicates
](
js-apis-data-dataSharePredicates.md
)
| 是 |
是 |
谓词查询,显示过滤条件 |
## AlbumFetchOptions
## AlbumFetchOptions
...
@@ -2475,7 +2460,7 @@ async function example() {
...
@@ -2475,7 +2460,7 @@ async function example() {
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
**系统能力:**
以下各项对应的系统能力均为SystemCapability.FileManagement.UserFileManager.Core
| 名称 | 类型 |
必填
| 说明 |
| 名称 | 类型 |
可读 | 可写
| 说明 |
| ---------------------- | ------------------- | ---- |------------------------------------------------ |
| ---------------------- | ------------------- | ---- |----
| ----
-------------------------------------------- |
| predicates |
[
dataSharePredicates.DataSharePredicates
](
js-apis-data-dataSharePredicates.md
)
| 是 | 谓词查询,显示过滤条件 |
| predicates |
[
dataSharePredicates.DataSharePredicates
](
js-apis-data-dataSharePredicates.md
)
| 是 |
是 |
谓词查询,显示过滤条件 |
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录