diff --git a/lib/paperclip/io_adapters/file_adapter.rb b/lib/paperclip/io_adapters/file_adapter.rb index 515b6ff86..6109bf760 100644 --- a/lib/paperclip/io_adapters/file_adapter.rb +++ b/lib/paperclip/io_adapters/file_adapter.rb @@ -69,7 +69,7 @@ def best_content_type_option(types) def type_from_file_command # On BSDs, `file` doesn't give a result code of 1 if the file doesn't exist. type = (self.original_filename.match(/\.(\w+)$/)[1] rescue "octet-stream").downcase - mime_type = (Paperclip.run("file", "-b --mime :file", :file => self.path).split(/[:;]\s+/)[0] rescue "application/x-#{type}") + mime_type = (Paperclip.run("file", "-b --mime :file", :file => self.path).split(/[:;\s]+/)[0] rescue "application/x-#{type}") mime_type = "application/x-#{type}" if mime_type.match(/\(.*?\)/) mime_type end diff --git a/test/file_adapter_test.rb b/test/file_adapter_test.rb index 61c9a455e..ba2bd65c1 100644 --- a/test/file_adapter_test.rb +++ b/test/file_adapter_test.rb @@ -20,6 +20,13 @@ class FileAdapterTest < Test::Unit::TestCase assert_equal "image/png", @subject.content_type end + should "provide correct mime-type for empty file" do + @subject = Paperclip.io_adapters.for(Tempfile.new("file_adapter_test")) + + # Content type contained '\n' at the end, for an empty file, on my Mac + assert_equal "application/x-empty", @subject.content_type + end + should "get the file's size" do assert_equal 4456, @subject.size end