ruby-on-rails - Carrierwave如何获取文件扩展名

标签 ruby-on-rails ruby ruby-on-rails-3 file-upload carrierwave

我正在开发一个需要文件上传/下载的 Ruby on Rails 应用程序。对于上传部分,我使用了 gem carrierwave,因为它非常易于使用且灵活。问题是:一旦我上传了文件,我需要知道一些事情:即如果它是 pdf 而不是下载文件,我会在线显示它,图像也是如此。我如何获得文件扩展名以及如何发送文件给用户?感谢任何反馈谢谢!!

最佳答案

确定文件扩展名(我想挂载的 uploader 的名称是"file"):

file = my_model.file.url
extension = my_model.file.file.extension.downcase

然后准备 mime 和配置变量:

disposition = 'attachment'
mime = MIME::Types.type_for(file).first.content_type

if %w{jpg png jpg gif bmp}.include?(extension) or extension == "pdf"
  disposition = 'inline'
end

(如果需要,添加其他扩展)。

然后发送文件:

send_file file, :type => mime, :disposition => disposition

关于ruby-on-rails - Carrierwave如何获取文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11644557/

相关文章:

ruby-on-rails - 有没有像 Twitter 对追随者所做的那样缩短大量数字的 gem ?

javascript - Ruby on Rails - 更改页面滚动上的 Logo 图像未激活

ruby-on-rails - 从 rails 中的整数或小数中去除逗号

ruby - 如何从两个哈希数组中获取联合/交叉/差异并忽略一些键

ruby-on-rails - Bundler 找不到 rspec 可执行文件

ruby - 如何制作一个 Ruby 应用程序来向特定用户汇款?

ruby-on-rails - 使用不同应用程序的单一登录接近 ruby​​ on rails

ruby-on-rails-3 - Rails 3 从另一个 Controller 渲染部分(错误:ActionView::MissingTemplate)

ruby-on-rails - 自定义路由的rspec get语句怎么写?

ruby-on-rails - 嵌套属性可以与继承结合使用吗?