使用回形针上传从Google驱动器下载的docx文件

时间:2018-09-17 07:49:02

标签: ruby-on-rails ruby paperclip

我想使用宝石回形针上传从Google驱动器下载的docx文件,但出现无效的内容类型错误。下面是我的代码

has_attached_file :initial_document
validates_attachment :initial_document, content_type: {content_type: %w(image/jpeg image/jpg image/png application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document)}

我能够上传通过ms word创建的文件,但不能从Google驱动器上传文件。 在调试过程中,我发现.docx文件的内容类型为 application / zip 。我正在使用 Rails 5.0和paperclip 5.1

1 个答案:

答案 0 :(得分:0)

问题在下面的行中,

validates_attachment :initial_document, content_type: {content_type:

在这里,content_type被重复,这是不正确的语法。

上方替换为

validates_attachment :initial_document, 
  content_type: %w(
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
    application/pdf
    application/msword
    application/word
    application/x-msword
    application/x-word
    application/zip
    text/plain
    image/jpeg 
    image/jpg 
    image/png 
  )

应用/压缩对于.docx文件很重要

我已经对上述更改进行了测试,并成功如下创建文档对象

    #<Document:0x0d0bd8f0> {
                                :id => 1,
           :document_list_file_name => "sample-document.docx",
        :document_list_content_type => "application/zip",
           :document_list_file_size => 12711,
          :document_list_updated_at => Wed, 19 Sep 2018 11:56:02 UTC +00:00
    }

希望,这将解决您的问题。