Wraps the Aliyun OSS as an Active Storage service, use Aliyun official Ruby SDK for upload.
Add this line to your application's Gemfile:
gem "activestorage-aliyun"
And then execute:
$ bundle
NOTE! Current document work for Rails 6.1, if you are using Rails 6.0, please visit: https://github.com/huacnlee/activestorage-aliyun/tree/v0.6.4 You can also to use activestorage-aliyun 1.0.0 in Rails 6.0
config/storage.yml
aliyun:
service: Aliyun
access_key_id: 'your-oss-access-key-id'
access_key_secret: 'your-oss-access-key-secret'
bucket: 'bucket-name'
endpoint: 'https://oss-cn-beijing.aliyuncs.com'
# path prefix, default: /
path: 'my-app-files'
# Bucket public: true/false, default: true, for generate public/private URL.
public: true
aliyun:
service: Aliyun
access_key_id: 'your-oss-access-key-id'
access_key_secret: 'your-oss-access-key-secret'
bucket: 'bucket-name'
endpoint: 'https://oss-cn-beijing.aliyuncs.com'
public: false
# Custom host for get file url, if this present, upload still use `endpoint`, but download url will use this.
host: 'https://file.myhost.com'
Original File URL:
<%= image_tag @photo.image.url %>
Thumb with OSS image service:
class Photo < ApplicationRecord
def image_thumb_url(process)
self.image.url(params: { "x-oss-process" => process })
end
end
And then:
<%= image_tag @photo.image_thumb_url("image/resize,h_100,w_100") %>
If you want to get original filename (Include Chinese and other UTF-8 chars), for example: 演示文件 download.zip
, you need present disposition: :attachment
option.
#
<%= image_tag @photo.image.url(disposition: :attachment) %>
$ bin/test test/activestorage_aliyun_test.rb
# run a line
$ bin/test test/activestorage_aliyun_test.rb:129
The gem is available as open source under the terms of the MIT License.