CarrierWave使用简介
附件上传是普通项目里比较常见的需求,想要实现上传功能,可以自己手写,也可以用一些比较方便使用的gem,比如本文介绍的carrierwave(一下简称cw)。
cw的使用方法比较简单,能实现的功能也比较多,不仅仅限于上传文件,还能对上传的图片格式的文件进行进一步的编辑处理。下面简单介绍一下基本的使用方法:
1.安装——gemfile里加上 gem 'carrierwave' ,然后bundle就可以了;
2.生成自己需要的uploader—— 项目根目录执行 rails g uploader Avatar,此时rails会自动创建一下文件:app/uploaders/avatar_uploader.rb
3.配置该文件:编辑器中打开刚才的文件,可以配置一些参数,比如:
配置存储文件的类型
storage :file
配置存储的路径
def
store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
配置文件名
def
filename original_filename if original_filename
end
还有一些配置使用RMagick或者MiniMagick来处理图片的功能,建议大家可以到railscasts这个网站下载相关视频看一下,这里附上直达链接http://railscasts.com/episodes/253-carrierwave-file-uploads
4.绑定模型里的字段——比如一个attachment模型的name字段,打开attachment.rb文件,进行如下操作:
I.引用文件
require 'carrierwave/orm/activerecord'
II.声明name字段与刚才生成的配置文件(其实是一个class)的绑定关系
mount_uploader :name, AvatarUploader
5.上传文件——
attachment = Attachment.new
attachment.name = File.open('local_url')
attachment.save
就是这么简单。
如果是前端页面里,那把name字段的录入框设置为file即可