Paperclip-使用 content_type='application/octet-stream' 验证 pdf

2023-11-23

我正在使用paperclip用于文件上传。验证如下:

validates_attachment_content_type :upload, :content_type=>['application/pdf'], :if => Proc.new { |module_file| !module_file.upload_file_name.blank? }, :message => "must be in '.pdf' format"

但是,我的客户今天抱怨说他无法上传pdf。经过调查后,我从请求标头得知正在提交的文件有content_type=application/octet-stream.

允许application/octet-stream将允许上传多种类型的文件。

请提出一个解决方案来处理这个问题。


回形针似乎无法正确检测内容类型。以下是我如何使用自定义内容类型检测和验证(模型中的代码)来修复它:

VALID_CONTENT_TYPES = ["application/zip", "application/x-zip", "application/x-zip-compressed", "application/pdf", "application/x-pdf"]

before_validation(:on => :create) do |file|
  if file.media_content_type == 'application/octet-stream'
    mime_type = MIME::Types.type_for(file.media_file_name)    
    file.media_content_type = mime_type.first.content_type if mime_type.first
  end
end

validate :attachment_content_type

def attachment_content_type
  errors.add(:media, "type is not allowed") unless VALID_CONTENT_TYPES.include?(self.media_content_type)
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Paperclip-使用 content_type='application/octet-stream' 验证 pdf 的相关文章

随机推荐

  • GraphQL::Client::DynamicQueryError 预期定义将分配给静态常量

    如何正确制作ShopifyAPI GraphQLRails 中的方法 尝试下面的代码rails console工作正常 但是当我尝试将该代码放入 Rails 控制器 模型中并创建一个方法时 我得到 GraphQL Client Dynami
  • 更新Android SDK包列表失败 - Unity 2019.2.10f1

    当我尝试导出 Android 平台的游戏版本时 我开始收到此错误 在项目设置中 最低 API 级别和目标 API 级别无论如何都不会加载 虽然我已使用 Unity 提供的所有默认设置来导出 Android 版本 这是说明这一点的图像 现在该
  • Google Web Toolkit 是否类似于 AWT 和 Swing

    我简单地查了一下GWT我喜欢这样的想法 我可以用 Java 进行开发 并将应用程序编译为 HTML 和 JavaScript GWT 和 AWT 以及 Swing 背后的概念是相同还是不同 它的编程非常相似 模仿 Swing 并且代码是 1
  • 将用户定义对象的数组列表传递给 Intent android

    我试图将 arraylist 的结构传递给意图 如下所示 在我正在使用的调用函数中 ArrayList
  • C++ 中允许“删除这个”吗?

    是否允许delete this 如果删除语句是对该类的该实例执行的最后一条语句 当然我确信由this 指针是newly 创建的 我正在考虑这样的事情 void SomeModule doStuff in the controller thi
  • 学习 asyncio:“协程从未等待”警告错误

    我正在尝试学习在 Python 中使用 asyncio 来优化脚本 我的示例返回一个coroutine was never awaited警告 您能帮助理解并找到解决方法吗 import time import datetime impor
  • Matlab 条形图 - 根据符号和大小用不同颜色填充条形

    我尝试用不同的颜色对条形图中的各个条形进行着色 例如蓝色表示正值 红色表示负值 我在互联网上找不到任何有效的东西 在下面的代码中 我发现每个条形都根据第一个条形的值进行着色 而不是每个条形的单独颜色 c1 zeros 32 3 c2 zer
  • Typescript 和 Electron 导出未定义

    我正在尝试运行我的简单电子应用程序 我使用 Typescript 作为编译为 JavaScript 的开发语言 当我运行该应用程序时 出现以下错误 ReferenceError exports is not defined Learn Mo
  • Valgrind...释放了大小为 8 的块内的 4 个字节

    尝试释放列表后 我在 Valgrind 中收到此错误 print list 将列表转储到系统日志 我非常有信心输出是正确的 瓦尔格林德 7028 1 errors in context 1 of 10 7028 Invalid read o
  • Colorbox 在 IE 中无法正确加载

    我已经找到了解决方案 但它不是最好的 所以我仍在寻找解决方案 请参阅我的答案以了解我所做的事情 UPDATE 当您打开开发人员工具时它消失的原因是 IE 不能很好地处理任何 console log 语句 直到您打开开发人员工具 某处必须有一
  • 在抽象类中公开静态方法被认为是好还是坏实践[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我最近遇到一些代码 其中public static方法被定义在一个abstract班级 我想知道这是否被认为是好的做法还是反模式 我制作了一个简单的示例程序来说明我的意思 public a
  • Python - 原始字符串文字[重复]

    这个问题在这里已经有答案了 我不明白原始字符串文字是如何工作的 我知道当使用r它忽略所有特价 就像做时一样 n它将其视为 n 而不是新行 但后来我尝试这样做 x r 它说SyntaxError EOL while scanning stri
  • 将 JSON 字符串保存到 MySQL 数据库

    我有一个 JSON 字符串 name jack school colorado state city NJ id null 我需要将其保存在数据库中 我怎么能这样做呢 我的PHP代码 我只建立了与MySQL的连接 但无法保存记录
  • preg_replace() 正则表达式匹配 CSS 文件中的相对 url() 路径

    我正在组合一些 CSS 文件并将它们写入单独目录中的文件中 我正在尝试更换亲戚url 值以使用新文件位置 忽略任何绝对 URL 下面是一些 CSS 示例 TEST background url test jpg background url
  • 有没有一种方法可以使用 GLFW 在按下按键后仅处理一个输入事件?

    目前 当按住所需的键时 输入会注册多次 有没有办法只处理按下按键后的第一个事件 并忽略后续事件 直到松开按键 我正在使用 processInput 函数 条件如下 if glfwGetKey window GLFW KEY LEFT GLF
  • 如何返回排序列表的索引? [复制]

    这个问题在这里已经有答案了 我需要对列表进行排序 然后返回一个列表 其中包含列表中已排序项目的索引 例如 如果我要排序的列表是 2 3 1 4 5 我需要 2 0 1 3 4 被退回 这个问题发布在字节上 但我想我会在这里重新发布 http
  • 从路径获取文件夹名称

    如果我有一个像 C My Documents Images Image1 png 这样的文件路径 如何获取 Image1 png 文件的父文件夹名称 在本例中为 图像 但这只是一个示例 我已经看过了System IO Path那里似乎什么也
  • C++:如果抛出异常,超出范围的对象是否会被销毁?

    通常它会在作用域结束时被破坏 如果抛出异常 我可以看到出现问题 Yes C 标准 n3337 15 异常处理 15 2 构造函数和析构函数 1 当控制从 throw 表达式传递到处理程序时 析构函数 被调用用于自 try 块以来构造的所有自
  • 如何在R的keras包中设置class_weight?

    我在用keras将其封装在 R 中以训练深度学习模型 我的数据集高度不平衡 因此 我想设置class weight论据中的fit功能 这是我用于模型的拟合函数及其参数 history lt model gt fit trainData tr
  • Paperclip-使用 content_type='application/octet-stream' 验证 pdf

    我正在使用paperclip用于文件上传 验证如下 validates attachment content type upload content type gt application pdf if gt Proc new module