2017-05-11 101 views
1

我无法附加XLS文件,但DOC作品:回形针:不能附加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,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 
+1

我想你应该简单地添加'应用程序/ vnd.ms-office'(如'file'命令提示),以列表支持的验证定义中的内容类型? – BoraMa

+0

@BoraMa没有不行。我试图补充说,但它仍然不会接受XLS文件。 – Chloe

回答

2

我切换到使用

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

就像一个魅力! –

+1

很酷的答案!非常感谢! – Jeremie