2
2
3
3
基于七牛 API 开发的前端 JavaScript SDK
4
4
5
- ## 当前版本为 2.x,查看 1.x 的文档请点击 [ 这里 ] ( https://github.com/qiniu/js-sdk/tree/1.x )
5
+ ## 当前版本为 3.x,旧版本文档: [ 2.x] ( https://github.com/qiniu/js-sdk/tree/2.x ) , [ 1.x] ( https://github.com/qiniu/js-sdk/tree/1.x )
6
6
7
7
## 快速导航
8
8
@@ -133,7 +133,7 @@ qiniu.compressImage(file, options).then(data => {
133
133
```
134
134
## API Reference Interface
135
135
136
- ### qiniu.upload(file: File, key: string, token: string, putExtra: object, config: object): observable
136
+ ### qiniu.upload(file: File, key: string, token: string, putExtra? : object, config? : object): observable
137
137
138
138
* ** observable** : 为一个带有 subscribe 方法的类实例
139
139
@@ -154,10 +154,14 @@ qiniu.compressImage(file, options).then(data => {
154
154
}
155
155
}
156
156
```
157
- * next: 接收上传进度信息,res是一个带有 ` total` 字段的 ` object` ,包含` loaded` 、` total` 、` percent` 三个属性,提供上传进度信息。
158
- * total .loaded : ` number` ,已上传大小,单位为字节。
159
- * total .total : ` number` ,本次上传的总量控制信息,单位为字节,注意这里的 total 跟文件大小并不一致。
160
- * total .percent : ` number` ,当前上传进度,范围:0 ~100 。
157
+ * next: 接收上传进度信息的回调函数,回调函数参数值为 ` object` ,包含字段信息如下:
158
+ * uploadInfo: ` object` ,只有分片上传时才返回该字段
159
+ * uploadInfo .id : 上传任务的唯一标识。
160
+ * uploadInfo .url : 上传地址。
161
+ * total: 包含` loaded` 、` total` 、` percent` 三个属性:
162
+ * total .loaded : ` number` ,已上传大小,单位为字节。
163
+ * total .total : ` number` ,本次上传的总量控制信息,单位为字节,注意这里的 total 跟文件大小并不一致。
164
+ * total .percent : ` number` ,当前上传进度,范围:0 ~100 。
161
165
162
166
* error: 上传错误后触发;自动重试本身并不会触发该错误,而当重试次数到达上限后则可以触发。当不是 xhr 请求错误时,会把当前错误产生原因直接抛出,诸如 JSON 解析异常等;当产生 xhr 请求错误时,参数 err 为一个包含 ` code` 、` message` 、` isRequestError` 三个属性的 ` object` :
163
167
* err .isRequestError : 用于区分是否 xhr 请求错误;当 xhr 请求出现错误并且后端通过 HTTP 状态码返回了错误信息时,该参数为 ` true` ;否则为 ` undefined` 。
@@ -169,10 +173,11 @@ qiniu.compressImage(file, options).then(data => {
169
173
170
174
* subscription: 为一个带有 ` unsubscribe` 方法的类实例,通过调用 ` subscription.unsubscribe()` 停止当前文件上传。
171
175
176
+ * ** bucket** : 上传的目标空间
172
177
* ** file** : ` File` 对象,上传的文件
173
178
* ** key** : 文件资源名
174
179
* ** token** : 上传验证信息,前端通过接口请求后端获得
175
- * ** config** : ` object`
180
+ * ** config** : ` object` ,其中的每一项都为可选
176
181
177
182
` ` ` JavaScript
178
183
const config = {
@@ -189,39 +194,24 @@ qiniu.compressImage(file, options).then(data => {
189
194
* config .concurrentRequestLimit : 分片上传的并发请求量,` number` ,默认为3 ;因为浏览器本身也会限制最大并发量,所以最大并发量与浏览器有关。
190
195
* config .checkByMD5 : 是否开启 MD5 校验,为布尔值;在断点续传时,开启 MD5 校验会将已上传的分片与当前分片进行 MD5 值比对,若不一致,则重传该分片,避免使用错误的分片。读取分片内容并计算 MD5 需要花费一定的时间,因此会稍微增加断点续传时的耗时,默认为 false ,不开启。
191
196
* config .forceDirect : 是否上传全部采用直传方式,为布尔值;为 ` true` 时则上传方式全部为直传 form 方式,禁用断点续传,默认 ` false` 。
197
+ * config .chunkSize : ` number` ,分片上传时每片的大小,必须为正整数,单位为 ` MB` ,且最大不能超过 1024 ,默认值 4 。因为 chunk 数最大 10000 ,所以如果文件以你所设的 ` chunkSize` 进行分片并且 chunk 数超过 10000 ,我们会把你所设的 ` chunkSize` 扩大二倍,如果仍不符合则继续扩大,直到符合条件。
192
198
193
- * ** putExtra** :
199
+ * ** putExtra** : ` object ` ,其中的每一项都为可选
194
200
195
201
` ` ` JavaScript
196
202
const putExtra = {
197
- fname: "",
198
- params: {},
199
- mimeType: [] || null
203
+ fname: "qiniu.txt",
204
+ mimeType: "text/plain",
205
+ customVars: { 'x:test': 'qiniu', ... },
206
+ metadata: { 'x-qn-meta': 'qiniu', ... },
200
207
};
201
208
` ` `
202
209
203
- * fname: ` string` ,文件原文件名
204
- * params: ` object` ,用来放置自定义变量,变量名必须以 ` x:` 开始,自定义变量格式及说明请参考[文档](https: // developer.qiniu.com/kodo/manual/1235/vars)
205
- * mimeType: ` null || array` ,用来限制上传文件类型,为 ` null` 时表示不对文件类型限制;限制类型放到数组里:
206
- ` ["image/png", "image/jpeg", "image/gif"]`
207
-
208
- ### qiniu .createMkFileUrl (url: string, file: File , key: string, putExtra: object): string
209
-
210
- 返回创建文件的 url;当分片上传时,我们需要把分片返回的 ctx 信息拼接后通过该 url 上传给七牛以创建文件。
211
-
212
- * ** url** : 上传域名,可以通过qiniu .getUploadUrl ()获得
213
- * ** file** : 文件对象
214
- * ** key** : 文件资源名
215
- * ** putExtra** : 同上
216
-
217
- ` ` ` JavaScript
218
- const requestUrl = qiniu.createMkFileUrl(
219
- uploadUrl,
220
- file,
221
- key,
222
- putExtra
223
- );
224
- ` ` `
210
+ * fname: ` string` ,文件原始文件名,若未指定,则魔法变量中无法使用 fname、ext、suffix
211
+ * customVars: ` object` ,用来放置自定义变量,变量名必须以 ` x:` 开始,自定义变量格式及说明请参考[文档](https: // developer.qiniu.com/kodo/manual/1235/vars)
212
+ * metadata: ` object` ,用来防止自定义 meta,变量名必须以 ` x-qn-meta-` 开始,自定义资源信息格式及说明请参考
213
+ [文档](https: // developer.qiniu.com/kodo/api/1252/chgm)
214
+ * mimeType: ` string` ,指定所传的文件类型
225
215
226
216
### qiniu .region : object
227
217
@@ -248,31 +238,10 @@ qiniu.compressImage(file, options).then(data => {
248
238
const headers = qiniu.getHeadersForChunkUpload(token)
249
239
` ` `
250
240
251
- ### qiniu .getHeadersForMkFile (token: string): object
241
+ ### qiniu .deleteUploadedChunks (token: string, key: stting, uploadInfo: object): Promise < void >
242
+ 删除指定上传任务中已上传完成的片,` key` 为目标文件名,` uploadInfo` 可通过 ` next` 的返回获取,` token` 由服务端生成
252
243
253
- 返回 ` object` ,包含用来获得文件创建的头信息,参数为 ` token` 字符串;当分片上传完需要把 ctx 信息传给七牛用来创建文件时,请求需要带该函数返回的头信息
254
-
255
- ` ` ` JavaScript
256
- const headers = qiniu.getHeadersForMkFile(token)
257
- ` ` `
258
-
259
- ### qiniu .getResumeUploadedSize (file: File ): number
260
- 断点续传时返回文件之前已上传的字节数,为 0 代表当前并无该文件的断点信息
261
-
262
- ### qiniu .filterParams (params: object): array
263
-
264
- 返回[[k, v],... ]格式的数组,k 为自定义变量 ` key` 名,v 为自定义变量值,用来提取 ` putExtra.params` 包含的自定义变量
265
-
266
- ` ` ` JavaScript
267
- const customVarList = qiniu.filterParams(putExtra.params)
268
-
269
- for (let i = 0; i < customVarList.length; i++) {
270
- const k = customVarList[i]
271
- multipart_params_obj[k[0]] = k[1]
272
- }
273
- ` ` `
274
- ###
275
- ### qiniu .compressImage (file: File , options: object) : Promise (上传前图片压缩)
244
+ ### qiniu .compressImage (file: File , options: object): Promise < CompressResult> (上传前图片压缩)
276
245
277
246
` ` ` JavaScript
278
247
const imgLink = qiniu.compressImage(file, options).then(res => {
@@ -291,6 +260,10 @@ qiniu.compressImage(file, options).then(data => {
291
260
* options .maxHeight : ` number` ,压缩图片的最大高度值
292
261
(注意:当 ` maxWidth` 和 ` maxHeight` 都不设置时,则采用原图尺寸大小)
293
262
* options .noCompressIfLarger : ` boolean` ,为 ` true` 时如果发现压缩后图片大小比原来还大,则返回源图片(即输出的 dist 直接返回了输入的 file);默认 ` false` ,即保证图片尺寸符合要求,但不保证压缩后的图片体积一定变小
263
+ * CompressResult: ` object` ,包含如下字段:
264
+ * dist: 压缩后输出的 File 对象,或原始的 file,具体看下面的 options 配置
265
+ * width: 压缩后的图片宽度
266
+ * height: 压缩后的图片高度
294
267
295
268
### qiniu .watermark (options: object, key?: string, domain?: string): string(水印)
296
269
0 commit comments