首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何验证文件内容类型为pdf,word,excel和纯文本的回形针?

如何验证文件内容类型为pdf,word,excel和纯文本的回形针?
EN

Stack Overflow用户
提问于 2012-01-11 19:12:11
回答 3查看 25.1K关注 0票数 19

在我的模型中:

代码语言:javascript
复制
 has_attached_file :uploaded_file,  
                      :url => "/policy_documents/get/:id",  
                      :path => "/public/policy_documents/:id/:basename.:extension" 

    validates_attachment_size :uploaded_file, :less_than => 10.megabytes    
    validates_attachment_presence :uploaded_file 
     validates_attachment_content_type :uploaded_file, :content_type =>['application/pdf', 'application/xlsx'],
                                                       :message => ', Only PDF, EXCEL, WORD or TEXT files are allowed. '

在此之后,它只能上传PDF文档,不能上传excel、word或文本文档。请帮帮我,我找不到了!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-02 00:12:27

我不知道您是否自己解决了这个问题,但是您缺少要处理的文档的MIME类型,请尝试将:content_type更改为:

代码语言:javascript
复制
:content_type => ["application/pdf","application/vnd.ms-excel",     
             "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
             "application/msword", 
             "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
             "text/plain"]

或使用自定义验证

代码语言:javascript
复制
validate :correct_content_type, :message => ", Only PDF, EXCEL, WORD or TEXT files are allowed."


def correct_content_type 
  acceptable_types = ["application/pdf","application/vnd.ms-excel",     
             "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
             "application/msword", 
             "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
             "text/plain"]
  acceptable_types.include? uploaded_file.content_type.chomp
end
票数 46
EN

Stack Overflow用户

发布于 2014-04-07 02:46:01

这实际上取决于您的服务器的'file‘命令。该命令返回给您的是您在回形针验证中需要接受的内容。

例如,我的Debian服务器为xls文件返回"application/msword“。对于xlsx文件,它会给出"application/zip“。

我目前用它们来接受xls和xlsx文件。

代码语言:javascript
复制
validates_attachment_content_type :file, :content_type => %w(application/zip application/msword application/vnd.ms-office application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
票数 2
EN

Stack Overflow用户

发布于 2015-06-11 20:58:14

对于任何文件,如果你正在上传,如果你不知道这意味着什么内容类型,签出上传的文档本身,在此之后,检查开发日志(或终端),在您的应用程序中的content_type it is...then更改该content_type。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8818251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档