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 CHANGED
@@ -1,5 +1,9 @@
1
1
  ## CHANGE LOG
2
2
 
3
+ ### v3.3.0
4
+
5
+ - 私有资源下载新版实现,添加 Qiniu::RS.generate_download_token() 方法。参考 [downloadToken](http://docs.qiniutek.com/v3/api/io/#get)
6
+
3
7
  ### v3.2.2
4
8
 
5
9
  fixed E701 error
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- qiniu-rs (3.2.2)
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.5)
15
+ json (1.7.6)
16
16
  mime-types (1.19)
17
- rake (10.0.2)
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.1)
25
- rspec-expectations (2.12.0)
24
+ rspec-core (2.12.2)
25
+ rspec-expectations (2.12.1)
26
26
  diff-lcs (~> 1.1.3)
27
- rspec-mocks (2.12.0)
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 (~> 2.11)
37
+ rspec (>= 2.11)
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Qiniu Resource (Cloud) Storage SDK for Ruby - [![Build Status](https://secure.travis-ci.org/why404/qiniu-rs-for-ruby.png?branch=master)](http://travis-ci.org/why404/qiniu-rs-for-ruby) [![Dependency Status](https://gemnasium.com/why404/qiniu-rs-for-ruby.png)](https://gemnasium.com/why404/qiniu-rs-for-ruby)
1
+ # Qiniu Resource (Cloud) Storage SDK for Ruby - [![Build Status](https://api.travis-ci.org/qiniu/ruby-sdk.png?branch=master)](https://travis-ci.org/qiniu/ruby-sdk) [![Dependency Status](https://gemnasium.com/why404/qiniu-rs-for-ruby.png)](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 源码地址:[https://github.com/qiniu/ruby-sdk](https://github.com/qiniu/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
- - [应用接入](#establish_connection!)
16
- - [Ruby On Rails 应用初始化设置](#ror-init)
17
- - [上传文件](#upload)
18
- - [获取用于上传文件的临时授权凭证](#generate-upload-token)
19
- - [服务端上传文件](#upload-server-side)
20
- - [断点续上传](#resumable-upload)
21
- - [针对 NotFound 场景处理](#upload-file-for-not-found)
22
- - [客户端直传文件](#upload-client-side)
23
- - [查看文件属性信息](#stat)
24
- - [获取文件下载链接(含文件属性信息)](#get)
25
- - [只获取文件下载链接](#download)
26
- - [删除指定文件](#delete)
27
- - [删除所有文件(单个 bucket)](#drop)
28
- - [批量操作](#batch)
29
- - [批量获取文件属性信息(含下载链接)](#batch_get)
30
- - [批量获取文件下载链接](#batch_download)
31
- - [批量删除文件](#batch_delete)
32
- - [创建公开外链](#publish)
33
- - [取消公开外链](#unpublish)
34
- - [Bucket(资源表)管理](#buckets)
35
- - [创建 Bucket](#mkbucket)
36
- - [列出所有 Bucket](#list-all-buckets)
37
- - [访问控制](#set-protected)
38
- - [图像处理](#op-image)
39
- - [查看图片属性信息](#image_info)
40
- - [查看图片EXIF信息](#image_exif)
41
- - [获取指定规格的缩略图预览地址](#image_preview_url)
42
- - [高级图像处理(缩略、裁剪、旋转、转化)](#image_mogrify_preview_url)
43
- - [高级图像处理(缩略、裁剪、旋转、转化)并持久化](#image_mogrify_save_as)
44
- - [高级图像处理(水印)](#image-watermarking)
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-file-for-not-found"></a>
255
+ <a name="upload-client-side"></a>
252
256
 
253
- ##### 针对 NotFound 场景处理
257
+ #### iOS / Android / Web 端直传文件说明
254
258
 
255
- 您可以上传一个应对 HTTP 404 出错处理的文件,当您 [创建公开外链](#publish) 后,若公开的外链找不到该文件,即可使用您上传的“自定义404文件”代替之。要这么做,您只须使用 `Qiniu::RS.upload_file` 函数上传一个 `key` 为固定字符串类型的值 `errno-404` 即可。
259
+ 客户端 iOS / Android / Web 上传流程和服务端上传类似,差别在于:客户端直传文件所需的 `uploadToken` 选择在客户方的业务服务器端生成,然后将其生成的 `uploadToken` 颁发给客户端。
256
260
 
257
- 除了使用 SDK 提供的方法,同样也可以借助七牛云存储提供的命令行辅助工具 [qboxrsctl](https://github.com/qiniu/devtools/tags) 达到同样的目的:
261
+ 简单来讲,客户端上传流程分为两步:
258
262
 
259
- qboxrsctl put <Bucket> <Key> <LocalFile>
263
+ 1. [服务端生成上传授权凭证(uploadToken)](#generate-upload-token)
264
+ 2. 客户端程序调用 [iOS](/v3/sdk/objc/) / [Android](/v3/sdk/android/) SDK 的文件上传方法进行上传
260
265
 
261
- 将其中的 `<Key>` 换作 `errno-404` 即可。
266
+ 如果是网页直传文件到七牛云存储,网页可以使用 JavaScript 动态实现 [七牛云存储上传API](/v3/api/io/#upload-file-by-html-form)。
262
267
 
263
- 注意,每个 `<Bucket>` 里边有且只有一个 `errno-404` 文件,上传多个,最后的那一个会覆盖前面所有的。
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
- 客户端上传流程和服务端上传类似,差别在于:客户端直传文件所需的 `upload_token` 可以选择在客户方的业务服务器端生成,也可以选择在客户方的客户端程序里边生成。选择前者,可以和客户方的业务揉合得更紧密和安全些,比如防伪造请求。
273
+ ### 文件下载
270
274
 
271
- 简单来讲,客户端上传流程也分为两步:
275
+ 七牛云存储上的资源下载分为 [公有资源下载](#download-public-files) 和 [私有资源下载](#download-private-files) 。
272
276
 
273
- 1. 获取 `upload_token`([用于上传文件的临时授权凭证](#generate-upload-token))
274
- 2. 将该 `upload_token` 作为文件上传流 `multipart/form-data` 中的一部分实现上传操作
277
+ 私有(private)是 Bucket(空间)的一个属性,一个私有 Bucket 中的资源为私有资源,私有资源不可匿名下载。
275
278
 
276
- 如果您的网络程序是从云端(服务端程序)到终端(手持设备应用)的架构模型,且终端用户有使用您移动端App上传文件(比如照片或视频)的需求,可以把您服务器得到的此 `upload_token` 返回给手持设备端的App,然后您的移动 App 可以使用 [七牛云存储 Objective-SDK (iOS)](http://docs.qiniutek.com/v3/sdk/objc/) 或 [七牛云存储 Android-SDK](http://docs.qiniutek.com/v3/sdk/android/) 的相关上传函数或参照 [七牛云存储API之文件上传](http://docs.qiniutek.com/v3/api/io/#upload) 直传文件。这样,您的终端用户即可把数据(比如图片或视频)直接上传到七牛云存储服务器上无须经由您的服务端中转,而且在上传之前,七牛云存储做了智能加速,终端用户上传数据始终是离他物理距离最近的存储节点。当终端用户上传成功后,七牛云存储服务端会向您指定的 `callback_url` 发送回调数据。如果 `callback_url` 所在的服务处理完毕后输出 `JSON` 格式的数据,七牛云存储服务端会将该回调请求所得的响应信息原封不动地返回给终端应用程序。
279
+ 新创建的空间(Bucket)缺省为私有,也可以将某个 Bucket 设为公有,公有 Bucket 中的资源为公有资源,公有资源可以匿名下载。
277
280
 
281
+ <a name="download-public-files"></a>
278
282
 
279
- <a name="stat"></a>
283
+ #### 公有资源下载
280
284
 
281
- ### 查看文件属性信息
285
+ [GET] http://<bucket>.qiniudn.com/<key>
282
286
 
283
- Qiniu::RS.stat(bucket, key)
287
+ 或者,
284
288
 
285
- 可以通过 SDK 提供的 `Qiniu::RS.stat` 函数,来查看某个已上传文件的属性信息。
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
- bucket
290
- : 必须,字符串类型(String),类似传统数据库里边的表名称,我们暂且将其叫做“资源表”,每份数据是属性信息都存储到具体的 bucket(资源表)中
318
+ expires_in
319
+ : 可选,数字类型,用于设置上传 URL 的有效期,单位:秒,缺省为 3600 秒,即 1 小时后该上传链接不再有效。
291
320
 
292
- key
293
- : 必须,字符串类型(String),类似传统数据库里边某个表的主键ID,每一个文件最终都用一个唯一 `key` 进行标示。
321
+ pattern
322
+ : 可选,字符串类型,用于设置可匹配的下载链接。参考:[downloadToken pattern 详解](/v3/api/io/#download-token-pattern)
294
323
 
295
- **返回值**
296
324
 
297
- 如果请求失败,返回 `false`;否则返回如下一个 `Hash` 类型的结构:
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
- fsize
307
- : 表示文件总大小,单位是 Byte
329
+ <a name="resumable-download"></a>
308
330
 
309
- hash
310
- : 文件的特征值,可以看做是基版本号
331
+ ##### 断点续下载
311
332
 
312
- mimeType
313
- : 文件的 mime-type
333
+ 七牛云存储支持标准的断点续下载,参考:[云存储API之断点续下载](/v3/api/io/#download-by-range-bytes)
314
334
 
315
- putTime
316
- : 上传时间,单位是 百纳秒
335
+ <a name="upload-file-for-not-found"></a>
317
336
 
318
- <a name="get"></a>
337
+ ##### 自定义 404 NotFound
319
338
 
320
- ### 获取文件下载链接(含文件属性信息)
339
+ 您可以上传一个应对 HTTP 404 出错处理的文件,当用户访问一个不存在的文件时,即可使用您上传的“自定义404文件”代替之。要这么做,您只须使用 `Qiniu::RS.upload_file` 函数上传一个 `key` 为固定字符串类型的值 `errno-404` 即可。
321
340
 
322
- Qiniu::RS.get(bucket, key, save_as = nil, expires_in = nil, version = nil)
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
- `Qiniu::RS.get` 函数除了能像 `Qiniu::RS.stat` 一样返回文件的属性信息外,还能返回具体的下载链接及其有效时间。
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
- "url" => "http://iovip.qbox.me/file/<an-authorized-token>",
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
- url
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="batch_get"></a>
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="batch_download"></a>
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
- Qiniu::RS.unpublish(domain)
502
+ <a name="cloud-processing"></a>
545
503
 
546
- 可以通过 SDK 提供的 `Qiniu::RS.unpublish` 函数来取消指定 `bucket` 的在某个 `domain` 域下的所有公开外链访问。
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
- 如果指定 bucket 创建成功,返回 `true`,否则返回 `false` 。
506
+ <a name="image-processing"></a>
577
507
 
578
- <a name="list-all-buckets"></a>
508
+ #### 图像
579
509
 
580
- #### 列出所有 Bucket
510
+ <a name="image-info"></a>
581
511
 
582
- Qiniu::RS.buckets
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="image_exif"></a>
546
+ <a name="image-exif"></a>
656
547
 
657
- #### 查看图片EXIF信息
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
- <a name="image_preview_url"></a>
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
- <a name="image_mogrify_save_as"></a>
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
  ## 贡献代码