【问题标题】:Paperclip: Cannot attach XLS (But DOC works)回形针:无法附加 XLS(但 DOC 有效)
【发布时间】:2017-10-11 03:22:18
【问题描述】:

我无法附加 XLS 文件,但 DOC 可以:

附件文件内容类型无效
附件文件无效

这是日志:

Parameters: ... "files"=>[#<ActionDispatch::Http::UploadedFile:0x0000000daf7730 @tempfile=#<Tempfile:C:/Users/Chloe/AppData/Local/Temp/RackMultipart20170511-47156-ym774u.xls>, @original_filename="Chocolate_Store1.xls", @content_type="application/vnd.ms-excel", @headers="Content-Disposition: form-data; name=\"deal[files][]\"; filename=\"Chocolate_Store1.xls\"\r\nContent-Type: application/vnd.ms-excel\r\n">],
...
Command :: file -b --mime "C:/Users/Chloe/AppData/Local/Temp/1f1fb4d71efc0bd245abd7b5b9aa661220170511-47156-1rqzd0q.xls"
   (1.0ms)  ROLLBACK
  Rendering deals/edit.html.erb within layouts/application

当我测试类型时:

>file -b --mime "C:/Users/Chloe/AppData/Local/Temp/1f1fb4d71efc0bd245abd7b5b9aa661220170511-47156-1rqzd0q.xls"
application/vnd.ms-office; charset=binary

我的接受列表中有这种类型:

class Attachment < ApplicationRecord
  has_attached_file :file
  validates_attachment_content_type :file, content_type: [
    "application/pdf", "application/msword", 
    "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
    "application/vnd.oasis.opendocument.text",
    "application/vnd.ms-excel",
    "application/vnd.ms-office",
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    "application/vnd.oasis.opendocument.spreadsheet"
   ]

end

Rails 5.0.2、Paperclip 5.1.0、文件 5.04 (DevKit)


我注意到 DevKit file 与 Cygwin file 不同。不确定是否相关:

>file -b --mime "C:/Users/Chloe/AppData/Local/Temp/1f1fb4d71efc0bd245abd7b5b9aa661220170515-54920-1e2bk5s.xls"
application/vnd.ms-office; charset=binary

$ file -b --mime "C:/Users/Chloe/AppData/Local/Temp/1f1fb4d71efc0bd245abd7b5b9aa661220170515-54920-1e2bk5s.xls"
application/vnd.ms-excel; charset=binary

【问题讨论】:

  • 我猜你应该简单地将application/vnd.ms-office(正如file 命令所建议的那样)添加到验证定义中支持的内容类型列表中?
  • @BoraMa 不,这行不通。我尝试添加它,但它仍然不接受 XLS 文件。

标签: ruby-on-rails paperclip mime-types paperclip-validation


【解决方案1】:

我改用了

validates_attachment_file_name :file, matches: [/\.pdf$/, /\.docx?$/, /\.xlsx?$/, /\.odt$/, /\.ods$/]

【讨论】:

  • 很酷的答案!非常感谢!
【解决方案2】:
...content_type: [...'application/x-ole-storage'...]

为我工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多