如何在Rails应用程序中检测文件类型?

里奇维斯

我正在使用Carrierwave将图像,文档和视频上传到我的s3存储桶。到目前为止,上传图像和文档是可以的。

我想在视图中做的是确定文件类型,然后显示图像(目前可以执行此操作),或者提供文档的图像,单击该图像将为用户下载/打开该文件的副本。 。

因此,我认为要渲染图像,我会这样做

 <% document.each do |doc| %>
   <%= link_to image_tag(doc.media_url(:thumb)) %> 
 <% end %>

但是我要怎么说

<% document.each do |doc| %>
  <% if doc.file_type == ['jpg', 'jpeg', 'png']
   <%= link_to image_tag(doc.media_url(:thumb)) %>
  <% else %>
    <%= link_to doc.media.path %> # This link downloading the file 
  <% end %>
<% end %>
克里斯蒂安

我猜(让其他人猜出您应该在问题中提供的内容不是一件好事),您有一个模型文档,而您的上传者是媒体,像这样:

class Document < ActiveRecord::Base
  mount_uploader :media, MediaUploader
end

在这种情况下,对于每个文档,您都将获得扩展名(document.media.file.extension.downcase)并将其与“ jpg”,“ jpeg”,“ png”进行比较

<% document.each do |doc| %>
  <% if ['jpg', 'jpeg', 'png'].include?(document.media.file.extension.downcase) %>
    <%= link_to image_tag(doc.media_url(:thumb)) %>
  <% else %>
    <%= link_to doc.media.path %> # This link downloading the file 
  <% end %>
<% end %>

如果需要,Carrierwave可以通过以下方式为您提供内容类型:

document.media.content_type # this returns image/png for a png file ...

编辑:

我认为更好的方法是像这样检查它(它更干净):

<% document.each do |doc| %>
  <% if document.media.content_type =~ /image/ %>
    <%= link_to image_tag(doc.media_url(:thumb)) %>
  <% else %>
    <%= link_to doc.media.path %> # This link downloading the file 
  <% end %>
<% end %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在应用程序中检测DND模式?

来自分类Dev

Ruby on Rails 4:如何在Rails Web应用程序中包含Javascript文件?

来自分类Dev

如何在C#控制台应用程序中过滤文件类型,例如.exe

来自分类Dev

如何在没有注释的Gemfile等文件中创建Rails应用程序?

来自分类Dev

如何在 Rails 应用程序中配置虚拟文件夹?

来自分类Dev

如何在TypeScript中获取函数应用程序的类型?

来自分类Dev

如何在Rails应用程序中添加Timer?

来自分类Dev

如何在Rails应用程序中扩展Time类?

来自分类Dev

如何在Rails应用程序中创建“导览”?

来自分类Dev

如何在Rails应用程序中包含插件/引擎?

来自分类Dev

如何在Rails应用程序中扩展Time类?

来自分类Dev

如何在Rails应用程序中安装jQuery UI?

来自分类Dev

如何在React应用程序中禁用文件监视

来自分类Dev

如何在应用程序中捆绑文件?

来自分类Dev

如何在MeanJS应用程序中实现文件下载

来自分类Dev

如何在Qt应用程序中打开文件?

来自分类Dev

如何在 AngularJS 应用程序中预览 PDF 文件?

来自分类Dev

Django:如何在“应用程序”文件夹中启动应用程序

来自分类Dev

如何在Ubuntu Touch应用程序的.desktop文件中设置应用程序图标?

来自分类Dev

如何在GNOME应用程序菜单中创建应用程序文件夹?

来自分类Dev

如何在GNOME应用程序菜单中创建应用程序文件夹?

来自分类Dev

如何在Ubuntu Touch应用程序的.desktop文件中设置应用程序图标?

来自分类Dev

如何在React Native上的Kill应用程序中检测到一个应用程序?

来自分类Dev

如何在 KDE 中更改一个特定应用程序的所有文件关联(MIME 类型)?

来自分类Dev

如何在目标c中的didFinishLaunchingWithOption应用程序方法中检测远程通知?

来自分类Dev

如何在Macbook上具有默认应用程序的文件夹中打开该文件类型的特定文件类型?

来自分类Dev

如何在Rails应用程序中添加带有类的新文件夹?

来自分类Dev

如何在Rails应用程序中包含带有自定义CSS和JS文件的静态页面

来自分类Dev

如何检测打开了哪个文件以启动应用程序

Related 相关文章

  1. 1

    如何在应用程序中检测DND模式?

  2. 2

    Ruby on Rails 4:如何在Rails Web应用程序中包含Javascript文件?

  3. 3

    如何在C#控制台应用程序中过滤文件类型,例如.exe

  4. 4

    如何在没有注释的Gemfile等文件中创建Rails应用程序?

  5. 5

    如何在 Rails 应用程序中配置虚拟文件夹?

  6. 6

    如何在TypeScript中获取函数应用程序的类型?

  7. 7

    如何在Rails应用程序中添加Timer?

  8. 8

    如何在Rails应用程序中扩展Time类?

  9. 9

    如何在Rails应用程序中创建“导览”?

  10. 10

    如何在Rails应用程序中包含插件/引擎?

  11. 11

    如何在Rails应用程序中扩展Time类?

  12. 12

    如何在Rails应用程序中安装jQuery UI?

  13. 13

    如何在React应用程序中禁用文件监视

  14. 14

    如何在应用程序中捆绑文件?

  15. 15

    如何在MeanJS应用程序中实现文件下载

  16. 16

    如何在Qt应用程序中打开文件?

  17. 17

    如何在 AngularJS 应用程序中预览 PDF 文件?

  18. 18

    Django:如何在“应用程序”文件夹中启动应用程序

  19. 19

    如何在Ubuntu Touch应用程序的.desktop文件中设置应用程序图标?

  20. 20

    如何在GNOME应用程序菜单中创建应用程序文件夹?

  21. 21

    如何在GNOME应用程序菜单中创建应用程序文件夹?

  22. 22

    如何在Ubuntu Touch应用程序的.desktop文件中设置应用程序图标?

  23. 23

    如何在React Native上的Kill应用程序中检测到一个应用程序?

  24. 24

    如何在 KDE 中更改一个特定应用程序的所有文件关联(MIME 类型)?

  25. 25

    如何在目标c中的didFinishLaunchingWithOption应用程序方法中检测远程通知?

  26. 26

    如何在Macbook上具有默认应用程序的文件夹中打开该文件类型的特定文件类型?

  27. 27

    如何在Rails应用程序中添加带有类的新文件夹?

  28. 28

    如何在Rails应用程序中包含带有自定义CSS和JS文件的静态页面

  29. 29

    如何检测打开了哪个文件以启动应用程序

热门标签

归档