rails|rails aws3图片上传

本文使用rails + paperclip + aws-sdk3 的简单图片上传

  1. 安装依赖
    paperclip这个gem依赖于ImageMagick
    Mac
    brew install imagemagick
    Linux
    sudo apt-get install imagemagick -y
    手动安装
    可以到ImageMagick的官方下载安装包 or 编译包进行手动安装
  2. 安装gem
  • paperclip
    使用gem install paperclip,默认安装最新,如果需要指定版本请在后面加上-v 版本号
    或者在Gemfile文件加上gem "paperclip",再执行bundle
  • S3
    gem install aws-sdk or Gemfile添加gem 'aws-sdk'之后bundle
  1. 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

    推荐阅读