qiniu-rs 3.2.2 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +7 -7
- data/README.md +1 -1
- data/docs/README.md +147 -503
- data/lib/qiniu/rs.rb +15 -3
- data/lib/qiniu/rs/up.rb +5 -9
- data/lib/qiniu/rs/version.rb +2 -2
- data/lib/qiniu/tokens/download_token.rb +33 -0
- data/lib/qiniu/tokens/qbox_token.rb +6 -4
- data/lib/qiniu/tokens/upload_token.rb +1 -1
- data/qiniu-rs.gemspec +1 -1
- data/spec/qiniu/rs/eu_spec.rb +2 -0
- data/spec/qiniu/rs/io_spec.rb +2 -2
- data/spec/qiniu/rs/rs_spec.rb +1 -1
- data/spec/qiniu/rs/up_spec.rb +2 -2
- data/spec/qiniu/rs_spec.rb +44 -3
- data/spec/qiniu/tokens/qbox_token_spec.rb +29 -0
- metadata +9 -6
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
qiniu-rs (3.
|
4
|
+
qiniu-rs (3.3.0)
|
5
5
|
json (~> 1.7)
|
6
6
|
mime-types (~> 1.19)
|
7
7
|
rest-client (~> 1.6)
|
@@ -12,19 +12,19 @@ GEM
|
|
12
12
|
specs:
|
13
13
|
diff-lcs (1.1.3)
|
14
14
|
fakeweb (1.3.0)
|
15
|
-
json (1.7.
|
15
|
+
json (1.7.6)
|
16
16
|
mime-types (1.19)
|
17
|
-
rake (10.0.
|
17
|
+
rake (10.0.3)
|
18
18
|
rest-client (1.6.7)
|
19
19
|
mime-types (>= 1.16)
|
20
20
|
rspec (2.12.0)
|
21
21
|
rspec-core (~> 2.12.0)
|
22
22
|
rspec-expectations (~> 2.12.0)
|
23
23
|
rspec-mocks (~> 2.12.0)
|
24
|
-
rspec-core (2.12.
|
25
|
-
rspec-expectations (2.12.
|
24
|
+
rspec-core (2.12.2)
|
25
|
+
rspec-expectations (2.12.1)
|
26
26
|
diff-lcs (~> 1.1.3)
|
27
|
-
rspec-mocks (2.12.
|
27
|
+
rspec-mocks (2.12.1)
|
28
28
|
ruby-hmac (0.4.0)
|
29
29
|
|
30
30
|
PLATFORMS
|
@@ -34,4 +34,4 @@ DEPENDENCIES
|
|
34
34
|
fakeweb (~> 1.3)
|
35
35
|
qiniu-rs!
|
36
36
|
rake (>= 0.9)
|
37
|
-
rspec (
|
37
|
+
rspec (>= 2.11)
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Qiniu Resource (Cloud) Storage SDK for Ruby - [ Storage SDK for Ruby - [](https://travis-ci.org/qiniu/ruby-sdk) [](https://gemnasium.com/why404/qiniu-rs-for-ruby)
|
2
2
|
|
3
3
|
# 关于
|
4
4
|
|
data/docs/README.md
CHANGED
@@ -6,58 +6,53 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
6
6
|
|
7
7
|
此 Ruby SDK 适用于 Ruby 1.8.x, 1.9.x, jruby, rbx, ree 版本,基于 [七牛云存储官方API](/v3/api/) 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。
|
8
8
|
|
9
|
-
七牛云存储 Ruby SDK
|
9
|
+
七牛云存储 Ruby SDK 源码地址:<https://github.com/qiniu/ruby-sdk>
|
10
10
|
|
11
|
-
|
11
|
+
**目录**
|
12
12
|
|
13
13
|
- [安装](#Installation)
|
14
|
+
- [接入](#turn-on)
|
15
|
+
- [配置密钥(AccessKey / SecretKey)](#establish_connection!)
|
16
|
+
- [针对 Ruby On Rails 网站应用初始化设置](#ror-init)
|
14
17
|
- [使用](#Usage)
|
15
|
-
- [
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
- [
|
20
|
-
|
21
|
-
|
22
|
-
- [
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- [
|
28
|
-
|
29
|
-
- [
|
30
|
-
- [
|
31
|
-
- [
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
-
|
44
|
-
-
|
45
|
-
- [水印准备工作](#watermarking-pre-work)
|
46
|
-
- [设置原图保护](#watermarking-set-protected)
|
47
|
-
- [设置水印预览图URL分隔符](#watermarking-set-sep)
|
48
|
-
- [设置水印预览图规格别名](#watermarking-set-style)
|
49
|
-
- [设置水印模板](#watermarking-set-template)
|
50
|
-
- [获取水印模板](#watermarking-get-template)
|
51
|
-
|
18
|
+
- [文件上传](#upload)
|
19
|
+
- [生成上传授权凭证(uploadToken)](#generate-upload-token)
|
20
|
+
- [Ruby 服务端上传文件](#upload-server-side)
|
21
|
+
- [开启断点续上传](#resumable-upload)
|
22
|
+
- [iOS / Android / Web 端直传文件说明](#upload-client-side)
|
23
|
+
- [文件下载](#download)
|
24
|
+
- [公有资源下载](#download-public-files)
|
25
|
+
- [私有资源下载](#download-private-files)
|
26
|
+
- [生成下载授权凭证(downloadToken)](#download-token)
|
27
|
+
- [高级特性](#other-download-features)
|
28
|
+
- [断点续下载](#resumable-download)
|
29
|
+
- [自定义 404 NotFound](#upload-file-for-not-found)
|
30
|
+
- [文件管理](#file-management)
|
31
|
+
- [查看单个文件属性信息](#stat)
|
32
|
+
- [复制单个文件](#copy)
|
33
|
+
- [移动单个文件](#move)
|
34
|
+
- [删除单个文件](#delete)
|
35
|
+
- [批量操作](#batch)
|
36
|
+
- [批量获取文件属性信息](#batch-get)
|
37
|
+
- [批量复制文件](#batch-copy)
|
38
|
+
- [批量移动文件](#batch-move)
|
39
|
+
- [批量删除文件](#batch-delete)
|
40
|
+
- [云处理](#cloud-processing)
|
41
|
+
- [图像](#image-processing)
|
42
|
+
- [查看图片属性信息](#image-info)
|
43
|
+
- [查看图片EXIF信息](#image-exif)
|
44
|
+
- [图像在线处理(缩略、裁剪、旋转、转化)](#image-mogrify-for-preview)
|
45
|
+
- [图像在线处理(缩略、裁剪、旋转、转化)后并持久化存储](#image-mogrify-for-save-as)
|
46
|
+
- 音频(TODO)
|
47
|
+
- 视频(TODO)
|
52
48
|
- [贡献代码](#Contributing)
|
53
49
|
- [许可证](#License)
|
54
50
|
|
51
|
+
|
55
52
|
<a name="Installation"></a>
|
56
53
|
|
57
54
|
## 安装
|
58
55
|
|
59
|
-
<a name="Usage"></a>
|
60
|
-
|
61
56
|
在您 Ruby 应用程序的 `Gemfile` 文件中,添加如下一行代码:
|
62
57
|
|
63
58
|
gem 'qiniu-rs'
|
@@ -71,11 +66,13 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
71
66
|
$ gem install qiniu-rs
|
72
67
|
|
73
68
|
|
74
|
-
|
69
|
+
<a name="turn-on"></a>
|
70
|
+
|
71
|
+
## 接入
|
75
72
|
|
76
73
|
<a name="establish_connection!"></a>
|
77
74
|
|
78
|
-
###
|
75
|
+
### 配置密钥(AccessKey / SecretKey)
|
79
76
|
|
80
77
|
要接入七牛云存储,您需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。可以通过如下步骤获得:
|
81
78
|
|
@@ -89,7 +86,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
89
86
|
|
90
87
|
<a name="ror-init"></a>
|
91
88
|
|
92
|
-
### Ruby On Rails
|
89
|
+
### 针对 Ruby On Rails 网站应用初始化设置
|
93
90
|
|
94
91
|
如果您使用的是 [Ruby on Rails](http://rubyonrails.org/) 框架,我们建议您在应用初始化启动的过程中,依次调用上述两个函数即可,操作如下:
|
95
92
|
|
@@ -104,13 +101,20 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
104
101
|
|
105
102
|
接下来,我们会逐一介绍此 SDK 提供的其他方法。
|
106
103
|
|
104
|
+
|
105
|
+
<a name="Usage"></a>
|
106
|
+
|
107
|
+
## 使用
|
108
|
+
|
107
109
|
<a name="upload"></a>
|
108
110
|
|
109
|
-
###
|
111
|
+
### 文件上传
|
112
|
+
|
113
|
+
**注意**:如果您只是想要上传已存在您电脑本地或者是服务器上的文件到七牛云存储,可以直接使用七牛提供的 [qrsync](/v3/tools/qrsync/) 上传工具。如果是需要通过您的网站或是移动应用(App)上传文件,则可以接入使用此 SDK,详情参考如下文档说明。
|
110
114
|
|
111
115
|
<a name="generate-upload-token"></a>
|
112
116
|
|
113
|
-
####
|
117
|
+
#### 生成上传授权凭证(uploadToken)
|
114
118
|
|
115
119
|
要上传一个文件,首先需要调用 SDK 提供的 `Qiniu::RS.generate_upload_token` 函数来获取一个经过授权用于临时匿名上传的 `upload_token`——经过数字签名的一组数据信息,该 `upload_token` 作为文件上传流中 `multipart/form-data` 的一部分进行传输。
|
116
120
|
|
@@ -159,7 +163,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
159
163
|
|
160
164
|
<a name="upload-server-side"></a>
|
161
165
|
|
162
|
-
#### 服务端上传文件
|
166
|
+
#### Ruby 服务端上传文件
|
163
167
|
|
164
168
|
通过 `Qiniu::RS.upload_file()` 方法可在客户方的业务服务器上直接往七牛云存储上传文件。该函数规格如下:
|
165
169
|
|
@@ -212,7 +216,7 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
212
216
|
|
213
217
|
<a name="resumable-upload"></a>
|
214
218
|
|
215
|
-
#####
|
219
|
+
##### 开启断点续上传
|
216
220
|
|
217
221
|
无需任何额外改动,SDK 提供的 `Qiniu::RS.upload_file()` 方法缺省支持断点续上传。默认情况下,SDK 会自动启用断点续上传的方式来上传超过 4MB 大小的文件。您也可以在 [应用接入](/v3/sdk/ruby/#establish_connection!) 时通过修改缺省配置来设置该阀值:
|
218
222
|
|
@@ -248,80 +252,114 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
|
248
252
|
: 整型,指定每次 http 若请求失败最多可以重试的次数,缺省为3次。该参数 SDK 全局有效。
|
249
253
|
|
250
254
|
|
251
|
-
<a name="upload-
|
255
|
+
<a name="upload-client-side"></a>
|
252
256
|
|
253
|
-
|
257
|
+
#### iOS / Android / Web 端直传文件说明
|
254
258
|
|
255
|
-
|
259
|
+
客户端 iOS / Android / Web 上传流程和服务端上传类似,差别在于:客户端直传文件所需的 `uploadToken` 选择在客户方的业务服务器端生成,然后将其生成的 `uploadToken` 颁发给客户端。
|
256
260
|
|
257
|
-
|
261
|
+
简单来讲,客户端上传流程分为两步:
|
258
262
|
|
259
|
-
|
263
|
+
1. [服务端生成上传授权凭证(uploadToken)](#generate-upload-token)
|
264
|
+
2. 客户端程序调用 [iOS](/v3/sdk/objc/) / [Android](/v3/sdk/android/) SDK 的文件上传方法进行上传
|
260
265
|
|
261
|
-
|
266
|
+
如果是网页直传文件到七牛云存储,网页可以使用 JavaScript 动态实现 [七牛云存储上传API](/v3/api/io/#upload-file-by-html-form)。
|
262
267
|
|
263
|
-
|
268
|
+
通过客户端直传文件,您的终端用户即可把数据(比如图片或视频)直接上传到七牛云存储服务器上,而无须经由您的服务端中转,终端用户上传数据始终是离他物理距离最近的七牛存储节点。当终端用户上传成功后,七牛云存储服务端会向您指定的 `callback_url` (一般在 [uploadToken](#generate-upload-token) 里边指定)发送回调数据(回调数据在客户端程序里边指定)。如果 `callback_url` 所指向的服务端处理完毕后输出 `JSON` 格式的数据,七牛云存储服务端会将该回调请求所得的 JSON 响应信息原封不动地返回给客户端应用程序。
|
264
269
|
|
265
|
-
<a name="upload-client-side"></a>
|
266
270
|
|
267
|
-
|
271
|
+
<a name="download"></a>
|
268
272
|
|
269
|
-
|
273
|
+
### 文件下载
|
270
274
|
|
271
|
-
|
275
|
+
七牛云存储上的资源下载分为 [公有资源下载](#download-public-files) 和 [私有资源下载](#download-private-files) 。
|
272
276
|
|
273
|
-
|
274
|
-
2. 将该 `upload_token` 作为文件上传流 `multipart/form-data` 中的一部分实现上传操作
|
277
|
+
私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。
|
275
278
|
|
276
|
-
|
279
|
+
新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。
|
277
280
|
|
281
|
+
<a name="download-public-files"></a>
|
278
282
|
|
279
|
-
|
283
|
+
#### 公有资源下载
|
280
284
|
|
281
|
-
|
285
|
+
[GET] http://<bucket>.qiniudn.com/<key>
|
282
286
|
|
283
|
-
|
287
|
+
或者,
|
284
288
|
|
285
|
-
|
289
|
+
[GET] http://<绑定域名>/<key>
|
290
|
+
|
291
|
+
绑定域名可以是自定义域名,可以在 [七牛云存储开发者自助网站](https://dev.qiniutek.com/buckets) 进行域名绑定操作。
|
292
|
+
|
293
|
+
注意,尖括号不是必需,代表替换项。
|
294
|
+
|
295
|
+
<a name="download-private-files"></a>
|
296
|
+
|
297
|
+
#### 私有资源下载
|
298
|
+
|
299
|
+
私有资源只能通过临时下载授权凭证(downloadToken)下载,下载链接格式如下:
|
300
|
+
|
301
|
+
[GET] http://<bucket>.qiniudn.com/<key>?token=<downloadToken>
|
302
|
+
|
303
|
+
或者,
|
304
|
+
|
305
|
+
[GET] http://<绑定域名>/<key>?token=<downloadToken>
|
306
|
+
|
307
|
+
<a name="download-token"></a>
|
308
|
+
|
309
|
+
##### 生成下载授权凭证(downloadToken)
|
310
|
+
|
311
|
+
`<downloadToken>` 可以使用 SDK 提供的如下方法生成:
|
312
|
+
|
313
|
+
Qiniu::RS.generate_download_token :expires_in => expires_in_seconds,
|
314
|
+
:pattern => download_url_patterns
|
286
315
|
|
287
316
|
**参数**
|
288
317
|
|
289
|
-
|
290
|
-
:
|
318
|
+
expires_in
|
319
|
+
: 可选,数字类型,用于设置上传 URL 的有效期,单位:秒,缺省为 3600 秒,即 1 小时后该上传链接不再有效。
|
291
320
|
|
292
|
-
|
293
|
-
:
|
321
|
+
pattern
|
322
|
+
: 可选,字符串类型,用于设置可匹配的下载链接。参考:[downloadToken pattern 详解](/v3/api/io/#download-token-pattern)
|
294
323
|
|
295
|
-
**返回值**
|
296
324
|
|
297
|
-
|
325
|
+
<a name="other-download-features"></a>
|
298
326
|
|
299
|
-
|
300
|
-
"fsize" => 3053,
|
301
|
-
"hash" => "Fu9lBSwQKbWNlBLActdx8-toAajv",
|
302
|
-
"mimeType" => "application/x-ruby",
|
303
|
-
"putTime" => 13372775859344500
|
304
|
-
}
|
327
|
+
#### 高级特性
|
305
328
|
|
306
|
-
|
307
|
-
: 表示文件总大小,单位是 Byte
|
329
|
+
<a name="resumable-download"></a>
|
308
330
|
|
309
|
-
|
310
|
-
: 文件的特征值,可以看做是基版本号
|
331
|
+
##### 断点续下载
|
311
332
|
|
312
|
-
|
313
|
-
: 文件的 mime-type
|
333
|
+
七牛云存储支持标准的断点续下载,参考:[云存储API之断点续下载](/v3/api/io/#download-by-range-bytes)
|
314
334
|
|
315
|
-
|
316
|
-
: 上传时间,单位是 百纳秒
|
335
|
+
<a name="upload-file-for-not-found"></a>
|
317
336
|
|
318
|
-
|
337
|
+
##### 自定义 404 NotFound
|
319
338
|
|
320
|
-
|
339
|
+
您可以上传一个应对 HTTP 404 出错处理的文件,当用户访问一个不存在的文件时,即可使用您上传的“自定义404文件”代替之。要这么做,您只须使用 `Qiniu::RS.upload_file` 函数上传一个 `key` 为固定字符串类型的值 `errno-404` 即可。
|
321
340
|
|
322
|
-
|
341
|
+
除了使用 SDK 提供的方法,同样也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](/v3/tools/qboxrsctl/) 达到同样的目的:
|
342
|
+
|
343
|
+
qboxrsctl put <Bucket> <Key> <LocalFile>
|
344
|
+
|
345
|
+
将其中的 `<Key>` 换作 `errno-404` 即可。
|
346
|
+
|
347
|
+
注意,每个 `<Bucket>` 里边有且只有一个 `errno-404` 文件,上传多个,最后的那一个会覆盖前面所有的。
|
323
348
|
|
324
|
-
|
349
|
+
|
350
|
+
<a name="file-management"></a>
|
351
|
+
|
352
|
+
### 文件管理
|
353
|
+
|
354
|
+
文件管理包括对存储在七牛云存储上的文件进行查看、复制、移动和删除处理。
|
355
|
+
|
356
|
+
<a name="stat"></a>
|
357
|
+
|
358
|
+
#### 查看单个文件属性信息
|
359
|
+
|
360
|
+
Qiniu::RS.stat(bucket, key)
|
361
|
+
|
362
|
+
可以通过 SDK 提供的 `Qiniu::RS.stat` 函数,来查看某个已上传文件的属性信息。
|
325
363
|
|
326
364
|
**参数**
|
327
365
|
|
@@ -331,15 +369,6 @@ bucket
|
|
331
369
|
key
|
332
370
|
: 必须,字符串类型(String),类似传统数据库里边某个表的主键ID,每一个文件最终都用一个唯一 `key` 进行标示。
|
333
371
|
|
334
|
-
save_as
|
335
|
-
: 可选,字符串类型(String),文件下载时保存的具体名称
|
336
|
-
|
337
|
-
expires_in
|
338
|
-
: 可选,整型,用于设置下载 URL 的有效期,单位:秒,缺省为 3600 秒
|
339
|
-
|
340
|
-
version
|
341
|
-
: 可选,字符串类型(String),值为 `Qiniu::RS.stat` 或 `Qiniu::RS.get` 函数返回的 `hash` 字段的值,可用于断点续下载。
|
342
|
-
|
343
372
|
**返回值**
|
344
373
|
|
345
374
|
如果请求失败,返回 `false`;否则返回如下一个 `Hash` 类型的结构:
|
@@ -348,8 +377,7 @@ version
|
|
348
377
|
"fsize" => 3053,
|
349
378
|
"hash" => "Fu9lBSwQKbWNlBLActdx8-toAajv",
|
350
379
|
"mimeType" => "application/x-ruby",
|
351
|
-
"
|
352
|
-
"expires" => 3600
|
380
|
+
"putTime" => 13372775859344500
|
353
381
|
}
|
354
382
|
|
355
383
|
fsize
|
@@ -361,23 +389,12 @@ hash
|
|
361
389
|
mimeType
|
362
390
|
: 文件的 mime-type
|
363
391
|
|
364
|
-
|
365
|
-
:
|
366
|
-
|
367
|
-
expires
|
368
|
-
: 文件下载链接的有效期,单位为 秒,过了 `expires` 秒之后,下载 `url` 将不再有效
|
369
|
-
|
370
|
-
<a name="download"></a>
|
371
|
-
|
372
|
-
### 只获取文件下载链接
|
373
|
-
|
374
|
-
Qiniu::RS.download(bucket, key, save_as = nil, expires_in = nil, version = nil)
|
375
|
-
|
376
|
-
`Qiniu::RS.download` 函数参数与 `Qiniu::RS.get` 一样,差别在于,`Qiniu::RS.download` 只返回文件的下载链接。
|
392
|
+
putTime
|
393
|
+
: 上传时间,单位是 百纳秒
|
377
394
|
|
378
395
|
<a name="delete"></a>
|
379
396
|
|
380
|
-
###
|
397
|
+
### 删除单个文件
|
381
398
|
|
382
399
|
Qiniu::RS.delete(bucket, key)
|
383
400
|
|
@@ -395,22 +412,6 @@ key
|
|
395
412
|
|
396
413
|
如果删除成功,返回 `true`,否则返回 `false` 。
|
397
414
|
|
398
|
-
<a name="drop"></a>
|
399
|
-
|
400
|
-
### 删除所有文件(单个 bucket)
|
401
|
-
|
402
|
-
Qiniu::RS.drop(bucket)
|
403
|
-
|
404
|
-
`Qiniu::RS.drop` 提供了删除整个 `bucket` 及其里边的所有 `key`,以及这些 `key` 关联的所有文件都将被删除。
|
405
|
-
|
406
|
-
**参数**
|
407
|
-
|
408
|
-
bucket
|
409
|
-
: 必须,字符串类型(String),类似传统数据库里边的表名称,我们暂且将其叫做“资源表”,每份数据是属性信息都存储到具体的 bucket(资源表)中 。
|
410
|
-
|
411
|
-
**返回值**
|
412
|
-
|
413
|
-
如果删除成功,返回 `true`,否则返回 `false` 。
|
414
415
|
|
415
416
|
<a name="batch"></a>
|
416
417
|
|
@@ -449,9 +450,9 @@ keys
|
|
449
450
|
...
|
450
451
|
]
|
451
452
|
|
452
|
-
<a name="
|
453
|
+
<a name="batch-get"></a>
|
453
454
|
|
454
|
-
####
|
455
|
+
#### 批量获取文件属性信息
|
455
456
|
|
456
457
|
Qiniu::RS.batch_get(bucket, keys)
|
457
458
|
|
@@ -483,23 +484,7 @@ keys
|
|
483
484
|
...
|
484
485
|
]
|
485
486
|
|
486
|
-
<a name="
|
487
|
-
|
488
|
-
#### 批量获取文件下载链接
|
489
|
-
|
490
|
-
Qiniu::RS.batch_download(bucket, keys)
|
491
|
-
|
492
|
-
`Qiniu::RS.batch_download` 函数也是在 `Qiniu::RS.batch` 之上的封装,提供批量获取文件下载链接的功能。
|
493
|
-
|
494
|
-
参数同 `Qiniu::RS.batch_get` 的参数一样。
|
495
|
-
|
496
|
-
**返回值**
|
497
|
-
|
498
|
-
如果请求失败,返回 `false`,否则返回一个 `Array` 类型的结构,其中每个元素是一个字符串类型的下载链接:
|
499
|
-
|
500
|
-
["<download-link-1>", "<download-link-2>", …, "<download-link-N>"]
|
501
|
-
|
502
|
-
<a name="batch_delete"></a>
|
487
|
+
<a name="batch-delete"></a>
|
503
488
|
|
504
489
|
#### 批量删除文件
|
505
490
|
|
@@ -513,112 +498,18 @@ keys
|
|
513
498
|
|
514
499
|
如果批量删除成功,返回 `true` ,否则为 `false` 。
|
515
500
|
|
516
|
-
<a name="publish"></a>
|
517
|
-
|
518
|
-
### 创建公开外链
|
519
|
-
|
520
|
-
Qiniu::RS.publish(domain, bucket)
|
521
|
-
|
522
|
-
调用 `Qiniu::RS.publish` 函数可以将您在七牛云存储中的资源表 `bucket` 发布到某个 `domain` 下,`domain` 需要在 DNS 管理里边 CNAME 到 `iovip.qbox.me` 。
|
523
|
-
|
524
|
-
这样,用户就可以通过 `http://<domain>/<key>` 来访问资源表 `bucket` 中的文件。键值为 `foo/bar/file` 的文件对应访问 URL 为 `http://<domain>/foo/bar/file`。 另外,`domain` 可以是一个真实的域名,比如 `www.example.com`,也可以是七牛云存储的二级路径,比如 `iovip.qbox.me/example` 。
|
525
|
-
|
526
|
-
例如:执行 `Qiniu::RS.publish("cdn.example.com", "EXAMPLE_BUCKET")` 后,那么键名为 `foo/bar/file` 的文件可以通过 `http://cdn.example.com/foo/bar/file` 访问。
|
527
|
-
|
528
|
-
**参数**
|
529
|
-
|
530
|
-
domain
|
531
|
-
: 必须,字符串类型(String),资源表发布的目标域名,例如:`cdn.example.com`
|
532
|
-
|
533
|
-
bucket
|
534
|
-
: 必须,字符串类型(String),要公开发布的资源表名称。
|
535
|
-
|
536
|
-
**返回值**
|
537
|
-
|
538
|
-
如果发布成功,返回 `true`,否则返回 `false` 。
|
539
|
-
|
540
|
-
<a name="unpublish"></a>
|
541
|
-
|
542
|
-
### 取消公开外链
|
543
501
|
|
544
|
-
|
502
|
+
<a name="cloud-processing"></a>
|
545
503
|
|
546
|
-
|
547
|
-
|
548
|
-
**参数**
|
549
|
-
|
550
|
-
domain
|
551
|
-
: 必须,字符串类型(String),资源表已发布的目标域名名称,例如:`cdn.example.com`
|
552
|
-
|
553
|
-
**返回值**
|
554
|
-
|
555
|
-
如果撤销成功,返回 `true`,否则返回 `false` 。
|
556
|
-
|
557
|
-
<a name="buckets"></a>
|
558
|
-
|
559
|
-
### Bucket(资源表)管理
|
560
|
-
|
561
|
-
<a name="mkbucket"></a>
|
562
|
-
|
563
|
-
#### 创建 Bucket
|
564
|
-
|
565
|
-
Qiniu::RS.mkbucket(bucket_name)
|
566
|
-
|
567
|
-
可以通过 SDK 提供的 `Qiniu::RS.mkbucket` 函数创建一个 bucket(资源表)。
|
568
|
-
|
569
|
-
**参数**
|
570
|
-
|
571
|
-
bucket_name
|
572
|
-
: 必须,字符串类型(String),资源表 bucket 的名称。
|
573
|
-
|
574
|
-
**返回值**
|
504
|
+
### 云处理
|
575
505
|
|
576
|
-
|
506
|
+
<a name="image-processing"></a>
|
577
507
|
|
578
|
-
|
508
|
+
#### 图像
|
579
509
|
|
580
|
-
|
510
|
+
<a name="image-info"></a>
|
581
511
|
|
582
|
-
|
583
|
-
|
584
|
-
可以通过 SDK 提供的 `Qiniu::RS.buckets` 函数列出当前登录客户的所有 buckets(资源表)。
|
585
|
-
|
586
|
-
**返回值**
|
587
|
-
|
588
|
-
如果请求成功,返回一个 buckets 的列表(Array),否则返回 `false` 。
|
589
|
-
|
590
|
-
["Bucket1", "Bucket2", …, "BucketN"]
|
591
|
-
|
592
|
-
<a name="set-protected"></a>
|
593
|
-
|
594
|
-
#### 访问控制
|
595
|
-
|
596
|
-
Qiniu::RS.set_protected(bucket_name, protected_mode)
|
597
|
-
|
598
|
-
可以通过 SDK 提供的 `Qiniu::RS.set_protected` 函数来设置指定 bucket 的访问属性,一般在水印处理时作原图保护用。
|
599
|
-
|
600
|
-
**参数**
|
601
|
-
|
602
|
-
bucket_name
|
603
|
-
: 必须,字符串类型(String),指定资源表 bucket 的名称。
|
604
|
-
|
605
|
-
protected_mode
|
606
|
-
: 必须,整型,值为 1 或者 0,值为 1 表示启用保护模式,反之亦然。
|
607
|
-
|
608
|
-
该函数不常用,一般在特殊场景下会用到。比如给图片打水印时,首先要设置原图保护,禁用公开的图像处理操作,采用水印的特殊图像处理,而保护原图就可以通过该函数操作实现。
|
609
|
-
|
610
|
-
**返回值**
|
611
|
-
|
612
|
-
如果设置成功,返回 `true`,否则返回 `false` 。
|
613
|
-
|
614
|
-
|
615
|
-
<a name="op-image"></a>
|
616
|
-
|
617
|
-
### 图像处理
|
618
|
-
|
619
|
-
<a name="image_info"></a>
|
620
|
-
|
621
|
-
#### 查看图片属性信息
|
512
|
+
##### 查看图片属性信息
|
622
513
|
|
623
514
|
Qiniu::RS.image_info(url)
|
624
515
|
|
@@ -652,9 +543,9 @@ height
|
|
652
543
|
colorModel
|
653
544
|
: 原始图片着色模式
|
654
545
|
|
655
|
-
<a name="
|
546
|
+
<a name="image-exif"></a>
|
656
547
|
|
657
|
-
|
548
|
+
##### 查看图片EXIF信息
|
658
549
|
|
659
550
|
Qiniu::RS.image_exif(url)
|
660
551
|
|
@@ -669,32 +560,9 @@ url
|
|
669
560
|
|
670
561
|
如果参数 `url` 所代表的图片没有 EXIF 信息,返回 `false`。否则,返回一个包含 EXIF 信息的 Hash 结构。
|
671
562
|
|
563
|
+
<a name="image-mogrify-for-preview"></a>
|
672
564
|
|
673
|
-
|
674
|
-
|
675
|
-
#### 获取指定规格的缩略图预览地址
|
676
|
-
|
677
|
-
Qiniu::RS.image_preview_url(url, spec)
|
678
|
-
|
679
|
-
使用 SDK 提供的 `Qiniu::RS.image_preview_url` 方法,可以基于一张存储于七牛云存储服务器上的图片,针对其下载链接,以及指定的缩略图规格类型,来获取该张图片的缩略图地址。
|
680
|
-
|
681
|
-
**参数**
|
682
|
-
|
683
|
-
url
|
684
|
-
: 必须,字符串类型(String),图片的下载链接,需是 `Qiniu::RS.get`(或`Qiniu::RS.batch_get`)函数返回值中 `url` 字段的值,或者是 `Qiniu::RS.download`(或`Qiniu::RS.batch_download`)函数返回的下载链接。且文件本身必须是图片。
|
685
|
-
|
686
|
-
spec
|
687
|
-
: 可选,字符串或整型的枚举值,指定缩略图的具体规格,参考 [七牛云存储API之缩略图预览](/v3/api/foimg/#fo-imagePreview) 和 [自定义缩略图规格](/v3/api/foimg/#fo-imagePreviewEx) 。该值缺省为 0 (即输出宽800px高600px图片质量为85的缩略图)
|
688
|
-
|
689
|
-
**返回值**
|
690
|
-
|
691
|
-
返回一个字符串类型的缩略图 URL
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
<a name="image_mogrify_preview_url"></a>
|
696
|
-
|
697
|
-
#### 高级图像处理(缩略、裁剪、旋转、转化)
|
565
|
+
##### 图像在线处理(缩略、裁剪、旋转、转化)
|
698
566
|
|
699
567
|
`Qiniu::RS.image_mogrify_preview_url()` 方法支持将一个存储在七牛云存储的图片进行缩略、裁剪、旋转和格式转化处理,该方法返回一个可以直接预览缩略图的URL。
|
700
568
|
|
@@ -726,10 +594,9 @@ mogrify_options
|
|
726
594
|
|
727
595
|
返回一个可以预览最终缩略图的URL,String 类型。
|
728
596
|
|
597
|
+
<a name="image-mogrify-for-save-as"></a>
|
729
598
|
|
730
|
-
|
731
|
-
|
732
|
-
#### 高级图像处理(缩略、裁剪、旋转、转化)并持久化存储处理结果
|
599
|
+
#### 图像在线处理(缩略、裁剪、旋转、转化)后并持久化存储
|
733
600
|
|
734
601
|
`Qiniu::RS.image_mogrify_save_as()` 方法支持将一个存储在七牛云存储的图片进行缩略、裁剪、旋转和格式转化处理,并且将处理后的缩略图作为一个新文件持久化存储到七牛云存储服务器上,这样就可以供后续直接使用而不用每次都传入参数进行图像处理。
|
735
602
|
|
@@ -800,229 +667,6 @@ mogrify_options
|
|
800
667
|
end
|
801
668
|
|
802
669
|
|
803
|
-
<a name="image-watermarking"></a>
|
804
|
-
|
805
|
-
## 高级图像处理(水印)
|
806
|
-
|
807
|
-
<a name="watermarking-pre-work"></a>
|
808
|
-
|
809
|
-
### 水印准备工作
|
810
|
-
|
811
|
-
为了保护用户原图和方便用户访问打过水印之后的图片,在经水印作用之前,需进行以下一些设置:
|
812
|
-
|
813
|
-
1. [设置原图保护](#watermarking-set-protected)
|
814
|
-
2. [设置水印预览图URL分隔符](#watermarking-set-sep)
|
815
|
-
3. [设置水印预览图规格别名](#watermarking-set-style)
|
816
|
-
|
817
|
-
<a name="watermarking-set-protected"></a>
|
818
|
-
|
819
|
-
#### 1. 设置原图保护
|
820
|
-
|
821
|
-
用户的图片打上水印后,其原图不可见。通过给原图所在的 Bucket(资源表)设置访问控制,可以达到保护原图的目的,详情请参考 [Bucket(资源表)管理之访问控制](set-protected)。
|
822
|
-
|
823
|
-
设置原图保护也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](https://github.com/qiniu/devtools/tags) 来实现:
|
824
|
-
|
825
|
-
// 为<Bucket>下面的所有图片设置原图保护
|
826
|
-
qboxrsctl protected <Bucket> <Protected>
|
827
|
-
|
828
|
-
<a name="watermarking-set-sep"></a>
|
829
|
-
|
830
|
-
#### 2. 设置水印预览图URL分隔符
|
831
|
-
|
832
|
-
没有设置水印前,用户可以通过如下公开链接的形式访问原图([创建公开外链后的情况下](/v3/api/io/#rs-Publish)):
|
833
|
-
|
834
|
-
http://<Domain>/<Key>
|
835
|
-
|
836
|
-
设置水印后,其原图属性为私有,不能再通过这种形式访问。但是用户可以在原图的 `<Key>` 后面加上“分隔符”,以及相应的水印风格样式来访问打水印后的图片。例如,假设您为用户设定的访问水印图的分隔符为中划线 “-”,那么用户可以通过这种形式来访问打水印后的图片:
|
837
|
-
|
838
|
-
http://<Domain>/<Key>-/imageView/<Mode>/w/<Width>/h/<Height>/q/<Quality>/format/<Format>/sharpen/<Sharpen>/watermark/<HasWatermark>
|
839
|
-
|
840
|
-
其中,`HasWatermark` 参数为 `0` (或者没有)表示不打水印,为 `1` 表示给图片打水印。
|
841
|
-
|
842
|
-
通过 SDK 提供的 `Qiniu::RS.set_separator` 函数可以设置水印预览图URL分隔符:
|
843
|
-
|
844
|
-
Qiniu::RS.set_separator(bucket_name, separator)
|
845
|
-
|
846
|
-
**参数**
|
847
|
-
|
848
|
-
bucket_name
|
849
|
-
: 必须,字符串类型(String),图片所在的 Bucket(资源表) 名称
|
850
|
-
|
851
|
-
separator
|
852
|
-
: 必须,字符串类型(String),源图片与预览图规格之间的分割符
|
853
|
-
|
854
|
-
**返回值**
|
855
|
-
|
856
|
-
操作成功返回 `true`,否则返回 `false`。
|
857
|
-
|
858
|
-
除了使用 SDK 提供的方法,同样可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](https://github.com/qiniu/devtools/tags) 达到同样的目的:
|
859
|
-
|
860
|
-
// 设置预览图分隔符
|
861
|
-
qboxrsctl separator <Bucket> <Sep>
|
862
|
-
|
863
|
-
<a name="watermarking-set-style"></a>
|
864
|
-
|
865
|
-
#### 3. 设置水印预览图规格别名
|
866
|
-
|
867
|
-
通过步骤2中所描述的水印预览图 URL 来访问打水印后的图片毕竟较为繁琐,因此可以通过为该水印预览图规格设置“别名”的形式来访问。如:
|
868
|
-
|
869
|
-
别名(Name) | 规格(Style) | 说明
|
870
|
-
----------- | ------------ | -------
|
871
|
-
small.jpg | imageView/0/w/120/h/90 | 大小为 120x90,不打水印
|
872
|
-
middle.jpg | imageView/0/w/440/h/330/watermark/1 | 大小为 440x330,打水印
|
873
|
-
large.jpg | imageView/0/w/1280/h/760/watermark/1 | 大小为 1280x760,打水印
|
874
|
-
|
875
|
-
|
876
|
-
SDK 提供了 `Qiniu::RS.set_style` 函数可以定义预览图规格别名,该函数原型如下:
|
877
|
-
|
878
|
-
Qiniu::RS.set_style(bucket, name, style)
|
879
|
-
|
880
|
-
**参数**
|
881
|
-
|
882
|
-
bucket
|
883
|
-
: 必须,字符串类型(String),图片所在的 Bucket(资源表) 名称
|
884
|
-
|
885
|
-
name
|
886
|
-
: 必须,字符串类型(String),预览图规格名称(别名)
|
887
|
-
|
888
|
-
style
|
889
|
-
: 必须,字符串类型(String),具体的规格样式
|
890
|
-
|
891
|
-
**返回值**
|
892
|
-
|
893
|
-
操作成功返回 `true`,否则返回 `false` 。
|
894
|
-
|
895
|
-
除了使用 SDK 提供的方法,同样也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](https://github.com/qiniu/devtools/tags) 达到同样的目的:
|
896
|
-
|
897
|
-
// 为 <Buecket> 下面的所有图片设置名为 <Name> 的 <Style>
|
898
|
-
qboxrsctl style <Bucket> <Name> <Style>
|
899
|
-
|
900
|
-
无论是通过 SDK 提供的方法还是命令行辅助工具操作,在设置完成后,即可通过通过以下方式来访问设定规格后的图片:
|
901
|
-
|
902
|
-
// 其中 “-” 为分隔符,“small.jpg” 为预览图规格别名
|
903
|
-
[GET] http://<Domain>/<Key>-small.jpg
|
904
|
-
|
905
|
-
// 其中 “!” 为分隔符,“middle.jpg” 为预览图规格别名
|
906
|
-
[GET] http://<Domain>/<Key>!middle.jpg
|
907
|
-
|
908
|
-
// 其中 “@” 为分隔符,“large.jpg” 为预览图规格别名
|
909
|
-
[GET] http://<Domain>/<Key>@large.jpg
|
910
|
-
|
911
|
-
以上这些设置水印模板前的准备只需操作一次,即可对后续设置的所有水印模板生效。由于是一次性操作,建议使用 qboxrsctl 命令行辅助工具进行相关设置。
|
912
|
-
|
913
|
-
**取消水印预览图规格设置**
|
914
|
-
|
915
|
-
您也可以为某个水印预览图规格取消“别名”设置,SDK 提供了相应的方法:
|
916
|
-
|
917
|
-
Qiniu::RS.unset_style(bucket, name)
|
918
|
-
|
919
|
-
**参数**
|
920
|
-
|
921
|
-
bucket
|
922
|
-
: 必须,字符串类型(String),图片所在的 Bucket(资源表) 名称
|
923
|
-
|
924
|
-
name
|
925
|
-
: 必须,字符串类型(String),预览图规格名称(别名)
|
926
|
-
|
927
|
-
**返回值**
|
928
|
-
|
929
|
-
操作成功返回 `true`,否则返回 `false` 。
|
930
|
-
|
931
|
-
除了使用 SDK 提供的方法,同样也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](https://github.com/qiniu/devtools/tags) 达到同样的目的:
|
932
|
-
|
933
|
-
// 取消预览图规格别名为 <Name> 的 Style
|
934
|
-
qboxrsctl unstyle <Bucket> <Name>
|
935
|
-
|
936
|
-
|
937
|
-
<a name="watermarking-set-template"></a>
|
938
|
-
|
939
|
-
### 设置水印模板
|
940
|
-
|
941
|
-
给图片加水印,SDK 提供了设置水印模板的函数:`Qiniu::RS.set_watermark` ,通过该函数操作,客户方可以设置通用的水印模板,也可以为客户方的每一个终端用户分别设置一个水印模板。
|
942
|
-
|
943
|
-
`Qiniu::RS.set_watermark` 函数原型如下:
|
944
|
-
|
945
|
-
Qiniu::RS.set_watermark(customer_id, {
|
946
|
-
:font => <FontName>,
|
947
|
-
:fontsize => <FontSize>,
|
948
|
-
:fill => <FillColor>,
|
949
|
-
:text => <WatermarkText>,
|
950
|
-
:bucket => <LogoBucket>,
|
951
|
-
:dissolve => <Dissolve>,
|
952
|
-
:gravity => <Gravity>,
|
953
|
-
:dx => <DistanceX>,
|
954
|
-
:dy => <DistanceY>
|
955
|
-
})
|
956
|
-
|
957
|
-
**参数**:
|
958
|
-
|
959
|
-
1. `customer_id = <EndUserID>`
|
960
|
-
: 客户方终端用户标识。如果`customer_id`为 `nil`,则表示设置默认水印模板。作为面向终端用户的服务提供商,您可以为不同的用户设置不同的水印模板,只需在设置水印模板的时候传入`customer_id`参数。如果该参数未设置,则表示为终端用户设置一个默认模板。举例:假如您为终端用户提供的是一个手机拍照软件,用户拍照后图片存储于七牛云存储服务器。为了给每个用户所上传的图片打上标有该用户用户名的水印,您可以为该用户设置一个水印模板,其水印文字可以是该终端用户的用户名。但如果您未给该终端用户设置模板,那么水印上的所有设置都是默认的(其文字部分可能是你们自己设置的企业标识)。该 `customer_id` 和 [Qiniu::RS.generate_upload_token](#generate-upload-token) 中的 `customer` 参数含义一致,结合这点,您很容易想明白为什么 `Qiniu::RS.generate_upload_token` 函数中会有 `customer` 这个可选参数还有 `Qiniu::RS.set_watermark` 函数中会有 `customer_id` 参考以及两者间的关系。
|
961
|
-
|
962
|
-
2. `:font => <FontName>`
|
963
|
-
: 为水印上的文字设置一个默认的字体名,可选。
|
964
|
-
|
965
|
-
3. `:fontsize => <FontSize>`
|
966
|
-
: 字体大小,可选,0表示默认,单位: 缇,等于 1/20 磅。
|
967
|
-
|
968
|
-
4. `:fill => <FillColor>`
|
969
|
-
: 字体颜色,可选。
|
970
|
-
|
971
|
-
5. `:text => <WatermarkText>`
|
972
|
-
: 水印文字,必须,图片用 \0 - \9 占位。
|
973
|
-
|
974
|
-
6. `:bucket => <ImageFromBucket>`
|
975
|
-
: 如果水印中有图片,需要指定图片所在的 `RS Bucket` 名称,可选。
|
976
|
-
|
977
|
-
7. `:dissolve => <Dissolve>`
|
978
|
-
: 透明度,可选,字符串,如50%。
|
979
|
-
|
980
|
-
8. `:gravity => <Gravity>`
|
981
|
-
: 位置,可选,字符串,默认为右下角(SouthEast)。可选的值包括:NorthWest、North、NorthEast、West、Center、East、SouthWest、South和SouthEast。
|
982
|
-
|
983
|
-
9. `:dx => <DistanceX>`
|
984
|
-
: 横向边距,可选,默认值为10,单位px。
|
985
|
-
|
986
|
-
10. `:dy => <DistanceY>`
|
987
|
-
: 纵向边距,可选,默认值为10,单位px。
|
988
|
-
|
989
|
-
**返回值**
|
990
|
-
|
991
|
-
操作成功返回 `true`,否则返回 `false` 。
|
992
|
-
|
993
|
-
|
994
|
-
<a name="watermarking-get-template"></a>
|
995
|
-
|
996
|
-
### 获取水印模板
|
997
|
-
|
998
|
-
SDK 提供了 `Qiniu::RS.get_watermark` 函数获取指定终端用户或者缺省的水印模板。该函数原型如下:
|
999
|
-
|
1000
|
-
Qiniu::RS.get_watermark(customer_id = nil)
|
1001
|
-
|
1002
|
-
**参数**
|
1003
|
-
|
1004
|
-
customer_id
|
1005
|
-
: 客户方终端用户标识,可选,字符串类型,含义同 [Qiniu::RS.set_watermark](#watermarking-set-template) 函数中的 `customer_id` 参数。该值缺省为 `nil`,如果该值为 `nil`,则表示取默认的通用水印模板。
|
1006
|
-
|
1007
|
-
**返回值**
|
1008
|
-
|
1009
|
-
如果请求成功,返回如下一段 Hash 结构的数据;否则返回 `false`。
|
1010
|
-
|
1011
|
-
{
|
1012
|
-
font: <FontName>
|
1013
|
-
fontsize: <FontSize>
|
1014
|
-
fill: <FillColor>
|
1015
|
-
text: <WatermarkText>
|
1016
|
-
bucket: <LogoBucket>
|
1017
|
-
dissolve: <Dissolve>
|
1018
|
-
gravity: <Gravity>
|
1019
|
-
dx: <DistanceX>
|
1020
|
-
dy: <DistanceY>
|
1021
|
-
}
|
1022
|
-
|
1023
|
-
请求成功后返回数据的含义同 [设置水印模板](#watermarking-set-template) 时传入的参数一致。
|
1024
|
-
|
1025
|
-
|
1026
670
|
<a name="Contributing"></a>
|
1027
671
|
|
1028
672
|
## 贡献代码
|