carrierwave-aliyun 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +4 -4
- data/README.md +20 -3
- data/lib/carrierwave/aliyun/configuration.rb +1 -0
- data/lib/carrierwave/aliyun/version.rb +1 -1
- data/lib/carrierwave/storage/aliyun.rb +32 -7
- data/spec/aliyun_spec.rb +5 -0
- data/spec/upload_spec.rb +17 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 387db2e8862191a027f5d4dd99d1df9bdfd4b77b
|
4
|
+
data.tar.gz: 69404451e625d3703a0f4918bce885e2ad2519c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee77d72ac9f0f7c3c09181cf2a745bd151d4d899c6215efb95944203aa7123d8adaf40932a7ffd8364c335c6cb76ee19b0c49b55b849e7043c4f8cc9e5edfc56
|
7
|
+
data.tar.gz: b6ac51e377646fe0f63a7217654f564192fc47507f75ff9569d6bba532eb88b676711c23766b701911d1df9af4a1c687ca3735e86f641c1148182eb1190aa5cd
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
carrierwave-aliyun (0.
|
4
|
+
carrierwave-aliyun (0.5.0)
|
5
5
|
aliyun-oss-sdk (>= 0.1.6)
|
6
6
|
carrierwave (>= 0.5.7)
|
7
7
|
|
8
8
|
GEM
|
9
|
-
remote:
|
9
|
+
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
actionmailer (4.2.0)
|
12
12
|
actionpack (= 4.2.0)
|
@@ -107,7 +107,7 @@ GEM
|
|
107
107
|
activesupport (= 4.2.0)
|
108
108
|
rake (>= 0.8.7)
|
109
109
|
thor (>= 0.18.1, < 2.0)
|
110
|
-
rake (
|
110
|
+
rake (11.2.2)
|
111
111
|
rspec (3.4.0)
|
112
112
|
rspec-core (~> 3.4.0)
|
113
113
|
rspec-expectations (~> 3.4.0)
|
@@ -148,4 +148,4 @@ DEPENDENCIES
|
|
148
148
|
sqlite3-ruby
|
149
149
|
|
150
150
|
BUNDLED WITH
|
151
|
-
1.
|
151
|
+
1.12.5
|
data/README.md
CHANGED
@@ -28,13 +28,30 @@ CarrierWave.configure do |config|
|
|
28
28
|
# 配置存储的地区数据中心,默认: cn-hangzhou
|
29
29
|
# config.aliyun_area = "cn-hangzhou"
|
30
30
|
# 使用自定义域名,设定此项,carrierwave 返回的 URL 将会用自定义域名
|
31
|
-
# 自定于域名请 CNAME 到 you_bucket_name.oss.aliyuncs.com (you_bucket_name 是你的 bucket 的名称)
|
31
|
+
# 自定于域名请 CNAME 到 you_bucket_name.oss-cn-hangzhou.aliyuncs.com (you_bucket_name 是你的 bucket 的名称)
|
32
32
|
config.aliyun_host = "http://foo.bar.com"
|
33
|
+
# 配置缩略图 Host,默认 #{aliyun_bucket}.img-#{aliyun_area}.aliyuncs.com
|
34
|
+
# config.aliyun_img_host = "http://you_bucket_name.img-cn-hangzhou.aliyuncs.com"
|
33
35
|
# Bucket 为私有读取请设置 true,默认 false,以便得到的 URL 是能带有 private 空间访问权限的逻辑
|
34
36
|
# config.aliyun_private_read = false
|
35
37
|
end
|
36
38
|
```
|
37
39
|
|
38
|
-
##
|
40
|
+
## 阿里云 OSS 图片缩略图
|
39
41
|
|
40
|
-
|
42
|
+
从 **0.5.0** 版本开始,carrierwave-aliyun 支持 Aliyun OSS 的图片缩略图了,你只需要在 Uploader 对象的 `url` 函数后面跟上 `:thumb` 附带缩略图参数就可以了。
|
43
|
+
|
44
|
+
> NOTE: 此方法同样支持 Private 的 Bucket 哦!
|
45
|
+
|
46
|
+
关于阿里云 OSS 图片缩略图的详细文档,请仔细阅读: [Aliyun OSS 接入图片服务](https://help.aliyun.com/document_detail/32210.html)
|
47
|
+
|
48
|
+
```rb
|
49
|
+
irb> User.last.avatar.url(thumb: '@100w_1c')
|
50
|
+
https://simple.img-cn-hangzhou.aliyuncs.com/users/avatar/12.png@100w_1c
|
51
|
+
irb> User.last.avatar.url(thumb: '@100w_200h_1c.jpg')
|
52
|
+
https://simple.img-cn-hangzhou.aliyuncs.com/users/avatar/12.png@100w_200h_1c.jpg
|
53
|
+
irb> User.last.avatar.url(thumb: '@100w_200h_1c_95q')
|
54
|
+
https://simple.img-cn-hangzhou.aliyuncs.com/users/avatar/12.png@100w_200h_1c_95q
|
55
|
+
# 你也可以用自定义的缩略图格式
|
56
|
+
irb> User.last.avatar.url(thumb: '@!large')
|
57
|
+
```
|
@@ -18,6 +18,7 @@ module CarrierWave
|
|
18
18
|
|
19
19
|
# Host for get request
|
20
20
|
@aliyun_host = uploader.aliyun_host || "http://#{@aliyun_bucket}.oss-#{@aliyun_area}.aliyuncs.com"
|
21
|
+
@aliyun_img_host = uploader.aliyun_img_host || "http://#{@aliyun_bucket}.img-#{@aliyun_area}.aliyuncs.com"
|
21
22
|
|
22
23
|
unless @aliyun_host.include?('//')
|
23
24
|
fail "config.aliyun_host requirement include // http:// or https://, but you give: #{@aliyun_host}"
|
@@ -80,15 +81,25 @@ module CarrierWave
|
|
80
81
|
|
81
82
|
##
|
82
83
|
# 根据配置返回完整的上传文件的访问地址
|
83
|
-
def path_to_url(path)
|
84
|
-
[
|
84
|
+
def path_to_url(path, opts = {})
|
85
|
+
if opts[:thumb]
|
86
|
+
thumb_path = [path, opts[:thumb]].join('')
|
87
|
+
[@aliyun_img_host, thumb_path].join('/')
|
88
|
+
else
|
89
|
+
[@aliyun_host, path].join('/')
|
90
|
+
end
|
85
91
|
end
|
86
92
|
|
87
93
|
# 私有空间访问地址,会带上实时算出的 token 信息
|
88
94
|
# 有效期 3600s
|
89
|
-
def private_get_url(path)
|
95
|
+
def private_get_url(path, opts = {})
|
90
96
|
path.sub!(PATH_PREFIX, '')
|
91
|
-
|
97
|
+
if opts[:thumb]
|
98
|
+
thumb_path = [path, opts[:thumb]].join('')
|
99
|
+
img_client.bucket_get_object_share_link(thumb_path, 3600)
|
100
|
+
else
|
101
|
+
oss_client.bucket_get_object_share_link(path, 3600)
|
102
|
+
end
|
92
103
|
end
|
93
104
|
|
94
105
|
private
|
@@ -102,6 +113,15 @@ module CarrierWave
|
|
102
113
|
@oss_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
|
103
114
|
end
|
104
115
|
|
116
|
+
def img_client
|
117
|
+
return @img_client if defined?(@img_client)
|
118
|
+
opts = {
|
119
|
+
host: "img-#{@aliyun_area}.aliyuncs.com",
|
120
|
+
bucket: @aliyun_bucket
|
121
|
+
}
|
122
|
+
@img_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
|
123
|
+
end
|
124
|
+
|
105
125
|
def oss_upload_client
|
106
126
|
return @oss_upload_client if defined?(@oss_upload_client)
|
107
127
|
|
@@ -158,11 +178,16 @@ module CarrierWave
|
|
158
178
|
nil
|
159
179
|
end
|
160
180
|
|
161
|
-
|
181
|
+
##
|
182
|
+
# Generate file url
|
183
|
+
# params
|
184
|
+
# :thumb - Aliyun OSS Image Processor option, etc: @100w_200h_95q
|
185
|
+
#
|
186
|
+
def url(opts = {})
|
162
187
|
if @uploader.aliyun_private_read
|
163
|
-
oss_connection.private_get_url(@path)
|
188
|
+
oss_connection.private_get_url(@path, opts)
|
164
189
|
else
|
165
|
-
oss_connection.path_to_url(@path)
|
190
|
+
oss_connection.path_to_url(@path, opts)
|
166
191
|
end
|
167
192
|
end
|
168
193
|
|
data/spec/aliyun_spec.rb
CHANGED
@@ -58,6 +58,11 @@ describe "Aliyun" do
|
|
58
58
|
expect(url).to include(*%w(Signature Expires OSSAccessKeyId))
|
59
59
|
expect(url).to include "http://#{@uploader.aliyun_bucket}.oss-cn-beijing.aliyuncs.com/bar/foo.jpg"
|
60
60
|
end
|
61
|
+
|
62
|
+
it "should get url with :thumb" do
|
63
|
+
url = @connection.private_get_url('bar/foo.jpg', thumb: '@100w_200h_90q')
|
64
|
+
expect(url).to include "http://#{@uploader.aliyun_bucket}.img-cn-beijing.aliyuncs.com/bar/foo.jpg@100w_200h_90q"
|
65
|
+
end
|
61
66
|
end
|
62
67
|
|
63
68
|
describe 'File' do
|
data/spec/upload_spec.rb
CHANGED
@@ -9,10 +9,12 @@ describe "Upload" do
|
|
9
9
|
ActiveRecord::Schema.define(:version => 1) do
|
10
10
|
create_table :photos do |t|
|
11
11
|
t.column :image, :string
|
12
|
+
t.column :content_type, :string
|
12
13
|
end
|
13
14
|
|
14
15
|
create_table :attachments do |t|
|
15
16
|
t.column :file, :string
|
17
|
+
t.column :content_type, :string
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
@@ -77,14 +79,28 @@ describe "Upload" do
|
|
77
79
|
it "should get uploaded file" do
|
78
80
|
img = open(@photo.image.url)
|
79
81
|
expect(img.size).to eq @file.size
|
82
|
+
expect(img.content_type).to eq 'image/jpeg'
|
80
83
|
img1 = open(@photo1.image.url)
|
81
84
|
expect(img1.size).to eq @file1.size
|
85
|
+
expect(img1.content_type).to eq 'image/gif'
|
82
86
|
end
|
83
87
|
|
84
88
|
it "sholud get small version uploaded file" do
|
85
89
|
expect(open(@photo.image.small.url)).not_to eq nil
|
86
90
|
expect(open(@photo1.image.small.url)).not_to eq nil
|
87
91
|
end
|
92
|
+
|
93
|
+
it "should get Aliyun OSS thumb url with :thumb option" do
|
94
|
+
url = @photo.image.url(thumb: '@150w_140h.png')
|
95
|
+
expect(url).to include('.img-')
|
96
|
+
expect(url).to include('@150w_140h.png')
|
97
|
+
url1 = @photo.image.url(thumb: '@!150w_140h.jpg')
|
98
|
+
expect(url1).to include('.img-')
|
99
|
+
expect(url1).to include('@!150w_140h.jpg')
|
100
|
+
img1 = open(url)
|
101
|
+
expect(img1.size).not_to eq 0
|
102
|
+
expect(img1.content_type).to eq 'image/png'
|
103
|
+
end
|
88
104
|
end
|
89
105
|
|
90
106
|
context "should update zip" do
|
@@ -100,6 +116,7 @@ describe "Upload" do
|
|
100
116
|
it "should get uploaded file" do
|
101
117
|
attach = open(@attachment.file.url)
|
102
118
|
expect(attach.size).to eq @file.size
|
119
|
+
expect(attach.content_type).to eq 'application/zip'
|
103
120
|
end
|
104
121
|
|
105
122
|
it "should delete old file when upload a new file again" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave-aliyun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
84
|
version: '0'
|
85
85
|
requirements: []
|
86
86
|
rubyforge_project:
|
87
|
-
rubygems_version: 2.
|
87
|
+
rubygems_version: 2.4.8
|
88
88
|
signing_key:
|
89
89
|
specification_version: 4
|
90
90
|
summary: Aliyun OSS support for Carrierwave
|