4
4
5
5
1 . 安装SDK
6
6
7
- ```
8
- ohpm install @qiniu/upload
7
+ ``` bash
8
+ ohpm i @qiniu/upload
9
9
```
10
10
11
11
2 . 导入SDK
12
12
13
- ``` javascript
14
- import { createMultipartUploadTask , FileData } from ' @qiniu/upload' ;
13
+ ``` typescript
14
+ import { createDirectUploadTask , createMultipartUploadTask , FileData } from ' @qiniu/upload' ;
15
15
```
16
16
17
17
3 . 创建上传任务
18
18
19
- ``` javascript
20
- // 获取当前应用的 context
21
- // 关于如何获取具体参考:https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-inner-application-context-0000001427744988-V3
22
- const context = getContext (this )
23
-
19
+ ``` typescript
24
20
// 创建上传数据
25
- const fileData: FileData = { type: ' uri' , data: ' file-uri' }
21
+ const fileData: FileData = { type: ' uri' , data: ' datashare://xxxx' }
22
+ const fileData: FileData = { type: ' path' , data: ' /data/storage/xxx' }
26
23
const fileData: FileData = { type: ' string' , data: ' content' }
27
24
const fileData: FileData = { type: ' array-buffer' , data: new ArrayBuffer (1e3 ) }
28
25
29
- // 注意:当前版本暂不支持直传
26
+ // 创建直传任务
27
+ // 由于系统 api9 接口问题暂时不推荐使用,无法获取上传的服务端返回信息
28
+ const uploadTask = createDirectUploadTask (fileData , config );
30
29
31
30
// 创建分片上传任务
32
- const multipartUploadTask = createMultipartUploadTask (context, fileData, config);
31
+ // 当前版本 SDK 暂不支持部分版本较老的私有集群分片上传功能
32
+ const uploadTask = createMultipartUploadTask (fileData , config );
33
33
```
34
34
35
- 4 . 设置任务回调函数
35
+ 1 . 设置任务回调函数
36
36
37
- ``` javascript
37
+ ``` typescript
38
38
// 设置进度回调函数
39
- directUploadTask .onProgress ((context ) => {
39
+ uploadTask .onProgress ((progress , context ) => {
40
40
// 处理进度回调
41
41
});
42
42
43
43
// 设置完成回调函数
44
- directUploadTask .onComplete ((context ) => {
44
+ uploadTask .onComplete ((result , context ) => {
45
45
// 处理完成回调
46
46
});
47
47
48
48
// 设置错误回调函数
49
- directUploadTask .onError ((context ) => {
49
+ uploadTask .onError ((error , context ) => {
50
50
// 处理错误回调
51
51
});
52
52
```
53
53
54
54
5 . 启动任务
55
55
56
- ``` javascript
57
- directUploadTask .start ()
58
- .then ((result ) => {
56
+ ``` typescript
57
+ uploadTask .start ()
58
+ ```
59
+
60
+ 6 . 简单模式
61
+
62
+ 如果你不需要关心进度信息,可以通过 start 快速获取任务的状态信息
63
+
64
+ ```
65
+ createMultipartUploadTask(fileData, config).start()
66
+ .then((result) => {
59
67
// 处理任务完成结果
60
68
})
61
69
.catch((error) => {
@@ -77,16 +85,16 @@ type TokenProvider = () => Promise<string>
77
85
### Context
78
86
79
87
` ` ` typescript
80
- interface Context {
88
+ interface Context < ProgressKey extends string = string > {
81
89
host? : Host ;
82
90
token? : Token ;
83
91
result? : string ;
84
92
error? : UploadError ;
85
- progress: Progress ;
93
+ progress: Progress < ProgressKey > ;
86
94
}
87
95
```
88
96
89
- - 上传队列的上下文接口 ,用于存储任务相关的信息。
97
+ - 上传的上下文接口 ,用于存储任务相关的信息。
90
98
- ` host ` :上传使用的 host。
91
99
- ` token ` :上传使用的 token。
92
100
- ` result ` :上传成功的信息。
@@ -98,42 +106,62 @@ interface Context {
98
106
``` typescript
99
107
interface UploadConfig {
100
108
tokenProvider: TokenProvider ;
101
- serverUrl? : string ;
109
+ apiServerUrl? : string ;
110
+ uploadHosts? : []string ;
102
111
logLevel? : LogLevel ;
103
112
protocol? : HttpProtocol ;
104
113
vars? : Record <string , string >;
105
114
}
106
115
```
107
116
108
117
- 上传配置接口,用于配置上传任务的相关参数。
109
- - ` serverUrl ` :服务器 URL,默认为 api.qiniu.com,专有云根据情况填写。
110
- - ` logLevel ` :日志级别,默认为 NONE,不输出任何日志。
118
+ - ` apiServerUrl ` :服务的接口地址;默认为七牛公有云,示例:< https://api.qiniu.com > 该配置仅当未设置 ` uploadHosts ` 时生效,SDK 将会通过指定的 api 服务提供的接口来动态获取上传地址,私有云请联系集群运维人员,并确认集群是否支持 ` v4/query ` 接口
119
+ - ` uploadHosts ` : 上传服务地址,手动指定上传服务地址,示例:up.qiniu.com
120
+ - ` logLevel ` :日志级别。
111
121
- ` protocol ` :HTTP 协议,默认 HTTPS。
112
122
- ` tokenProvider ` :用于获取上传所需 token 的函数。
113
123
- ` vars ` : 上传过程中的自定义变量。
114
124
115
125
### OnError
116
126
117
127
``` typescript
118
- type OnError = (context : Context ) => void ;
128
+ type OnError = (error : UploadError , context : Context ) => void ;
119
129
```
120
130
121
131
- 错误回调函数类型。
122
- - 接收一个上下文参数,并返回 ` void ` 。
123
132
124
133
### OnProgress
125
134
126
135
``` typescript
127
- type OnProgress = (context : Context ) => void ;
136
+ type OnProgress = (progress : Progress , context : Context ) => void ;
128
137
```
129
138
130
139
- 进度回调函数类型。
131
- - 接收一个上下文参数,并返回 ` void ` 。
140
+
141
+ #### Progress
142
+
143
+ ``` typescript
144
+ type Progress <Key extends string = string > = {
145
+ /** 上传的文件总大小;单位 byte */
146
+ size: number
147
+ /** 目前处理的百分比进度;范围 0-1 */
148
+ percent: number
149
+ /** 具体每个部分的进度信息; */
150
+ details: Record <Key , {
151
+ /** 子任务的处理数据大小;单位 byte */
152
+ size: number
153
+ /** 目前处理的百分比进度;范围 0-1 */
154
+ percent: number
155
+ /** 该处理是否复用了缓存; */
156
+ fromCache: boolean
157
+ }>
158
+ }
159
+ ` ` `
132
160
133
161
### OnComplete
134
162
135
163
` ` ` typescript
136
- type OnComplete = (context : Context ) => void ;
164
+ type OnComplete = (result : string , context : Context ) => void ;
137
165
```
138
166
139
167
- 完成回调函数类型。
@@ -156,4 +184,4 @@ interface UploadTask {
156
184
- ` onComplete(fn: OnComplete) ` :设置完成回调函数。
157
185
- ` onError(fn: OnError) ` :设置错误回调函数。
158
186
- ` cancel() ` :取消上传任务,并返回一个 Promise,该 Promise 在解析时提供任务结果。
159
- - ` start() ` :启动上传任务,并返回一个 Promise, 该Promise 在解析时提供任务结果。
187
+ - ` start() ` :启动上传任务,并返回一个 Promise, 该 Promise 在解析时提供任务结果。
0 commit comments