Rails 回形针,多种不同类型(PDF、图像、文档...)

Posted

技术标签:

【中文标题】Rails 回形针,多种不同类型(PDF、图像、文档...)【英文标题】:Rails Paperclip, Multiple of Different Type (PDF, Image, Doc...) 【发布时间】:2012-01-15 11:16:41 【问题描述】:

有很多很好的资源展示了如何创建一个包含多个图像上传的 Rails 应用程序。此外,还有很多很好的资源展示了如何使用回形针上传不同类型的文件(PDF、图片、.Doc)。

我想创建一个应用程序,其中用户拥有其个人资料图片的图像资产,并且还能够将 PDF 或 .Doc 文件上传到他们的帐户以与用户绑定。有没有人有这方面的经验来确认它可以通过回形针宝石?任何指导我正确方向的教程或资源将不胜感激。

【问题讨论】:

您的话:“......有很多很好的资源展示了如何使用回形针上传不同的文件类型(PDF、图像、.Doc)。” 这些教程仅涵盖 PDF 的单个文件上传。不是不同类型的多个文件上传,以及这些资源在表单上传、控制器等中是如何管理的。 我也有同样的问题... :( 得到了解决方案....发布在下面... 【参考方案1】:

我也遇到了和你一样的问题。无需为此做额外的编码,只需添加以下内容

has_attached_file :attachment,
                    :styles => lambda |a|
                                  ["image/jpeg", "image/png", "image/jpg", "image/gif"].include?( a.content_type ) ? 
                                  :thumb=> "100x100#",
                                  :small  => "150x150>",
                                  :medium => "300x300>",
                                  :large =>   "500x500>" : 
                                 

如果您需要进一步的解释,请告诉我。

【讨论】:

感谢 RAJ,这很有趣。然而,我的核心问题是找到一种将图像和文档合并到其中的方法。因此,用户可以上传个人资料图片,并且用户还可以将简历文档(word 文档)上传到他们的帐户。 是的,正如我所说,我遇到了同样的问题......只需按照我的代码,它将为图像存储 5 种尺寸(包括原件),而对于其他文件(如 .doc、.pdf 等)仅存储原始文档 谢谢.. 但是我们是否可以选择显示其他格式的特定图标。对于 pdf 我们显示 icon1,对于 .doc 我们显示 icon2 据我了解,您想存储一些其他特定扩展的图标。如果是,您可以使用嵌套条件或开关(大小写)来根据扩展名指定不同的样式。 谢谢老兄!这有很大帮助。你节省了我的时间。【参考方案2】:

以防万一最近有人在看这个,我们刚刚尝试了接受的答案,但内容类型无法正常工作。我们让它像这样工作:

has_attached_file :attachment, styles:  lambda  |a| a.instance.attachment_content_type =~ %r(image) ? :small => "x200>", :medium => "x300>", :large => "x400>"  :  

区别在于对象的“列名”——通常是“___content_type”,而不仅仅是“content_type”

【讨论】:

【参考方案3】:

你当然可以上传图片和其他装满回形针的东西,可能值得去 www.railscasts.com,因为有很多与你的问题相关的帖子。

【讨论】:

我已经看过 Railscasts 并且熟悉其他主要教程。教程涵盖了其他文件类型,或同一文件类型的多次上传,但不是两者兼而有之 - 当同时实现这两种文件时,会出现许多复杂情况。

以上是关于Rails 回形针,多种不同类型(PDF、图像、文档...)的主要内容,如果未能解决你的问题,请参考以下文章

Rails:回形针不将图像保存到数据库

Rails:使用 Jcrop 和回形针裁剪图像后出现重定向问题

Ruby On Rails:获取回形针图像的 md5 哈希

在 rails 中使用回形针 3.3.1 进行图像裁剪

将图像从 Android(使用 Android 异步 Http 客户端)上传到 rails 服务器(使用回形针)

使用回形针 Rails 3 上传的 id 显示来自另一个模型的图像