rails|rails aws3图片上传
本文使用rails + paperclip + aws-sdk3 的简单图片上传
- 安装依赖
paperclip这个gem依赖于ImageMagick
Mac
brew install imagemagick
Linux
sudo apt-get install imagemagick -y
手动安装
可以到ImageMagick的官方下载安装包 or 编译包进行手动安装
- 安装gem
- paperclip
使用gem install paperclip
,默认安装最新,如果需要指定版本请在后面加上-v 版本号
或者在Gemfile文件加上gem "paperclip"
,再执行bundle
- S3
gem install aws-sdk
or Gemfile添加gem 'aws-sdk'
之后bundle
- rails保存图片
ok,我们的准备工作已经完成,接下来让我们写图片保存的核心
图片信息需要挂在一个model上
rails g model user
ok,然后就是保存图片的信息字段
rails g paperclip user avatar
它会在db的迁移文件中生成这几个字段
class AddAvatarColumnsToUsers < ActiveRecord::Migration
def up
add_attachment :users, :avatar
# === 生成的 db column ===
# avatar_file_name
# avatar_file_size
# avatar_content_type
# avatar_updated_at
enddef down
remove_attachment :users, :avatar
end
end
执行迁移
rake db:migrate
db完成之后,接下来就是在model层做好s3的配置
has_attached_file :avatar,
:storage => :s3,
:s3_credentials => Proc.new{|a| a.instance.s3_credentials }# your s3 config
def s3_credentials
{
:bucket => "xxx",
:access_key_id => "xxx",
:secret_access_key => "xxx",
:s3_region => "us-east-1"
}
end
【rails|rails aws3图片上传】配置完成之后,就开始测试是否能上传吧
准备我们的文件上传view
接下来需要创建controller来接收我们的文件
@user = User.create params[:user]
如果没有什么差错的话,我们保存成功之后图片就到aws上了。
参考 github paperclip
paperclip s3 doc
github aws-sdk