carrierwave上传附件及下载

2017-12-07  本文已影响0人  程序萌

gemfile中添加

gem 'carrierwave', '~> 1.0'
bundle install

生成uploader

rails generate uploader Image
生成文件:app/uploaders/avatar_uploader.rb

用脚手架创建一个模型(2选1)记得rake db:migrate

rails g scaffold image file:string
rails g scaffold admin/image file:string #带命名空间的

在image的model文件中添加

class Ancient::Image < ApplicationRecord
  mount_uploader :file, ImageUploader
end

在imag的new页面添加

<%= form.file_field :file %> #上传图片

在imag的show页面添加(取图片)

<%= image_tag(@ancient_image.file.url, width: '80px', height: '50px') %> #可设置取的图片大小

下载已上传的附件

 def down
    article_file = @article.file  #实例的附件
    file_name = _file_name_for_agent(@article.file_name)#实例的名称
    send_file "#{article_file.file.file}", :filename => file_name
  end

 # 为ie附件下载获取正确文件名(写在ApplicationController.rb中)
  def _file_name_for_agent(name)
    user_agent = request.user_agent.downcase
    file_name = user_agent.include?("msie") ? CGI::escape(name) : name
  end

上一篇 下一篇

猜你喜欢

热点阅读