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即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,082评论 19 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,987评论 0 15
  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 679评论 0 0
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,214评论 2 38
  • 这是前几天给同事们做的主题分享。整理一下也顺手纪念那些钱有点儿少心有点儿野的日子。 “更大的世界”。我找了这个标题...
    帕洛马阅读 412评论 0 2