带有回形针 Docx content_type 的 Rails 以 application/zip 的形式返回

Posted

技术标签:

【中文标题】带有回形针 Docx content_type 的 Rails 以 application/zip 的形式返回【英文标题】:Rails with paperclip Docx content_type is coming back as application/zip 【发布时间】:2011-06-16 06:10:29 【问题描述】:

还有其他人看过吗?

我正在使用带有回形针的 rails 3,当我上传 .doc 时,它的应用程序/msword 效果很好,但是当我上传 .docx 时,content_type 被保存为 application/zip。

想法?

【问题讨论】:

我不是 100% 确定,但我相信 .docx 实际上是一个包含一堆 XML 文件的 zip;所以从技术上讲,它是一个 zip 文件是正确的! @Stephen,谢谢,这很有趣。关于是否可以将 docx 转换为 doc 用于预览目的的任何想法? 不知道 - 我想这是可能的,但取决于您需要预览的功能有多全面,您也许只能找到一个可以提供帮助的 docx 解析器?跨度> 【参考方案1】:

具有讽刺意味的是,IE 可能难以识别新的 MS Office 文件,而其他浏览器则可以很好地识别它们。

为了让 IE 使用这些文件,您需要将 mime 类型添加到服务器配置中。在 Rails 中,这是在 config/initializers/mime_types.rb 中完成的

Mime::Type.register "application/vnd.openxmlformats-officedocument.wordprocessingml.document", :docx
Mime::Type.register "application/vnd.openxmlformats-officedocument.presentationml.presentation", :pptx
Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx

如果您的应用通过 Apache 代理,并且 Apache 为您的静态资产提供服务,您还必须按照 http://bignosebird.com/apache/a1.shtml 为 apache 配置新的 mime 类型(并重新启动)

我的 mime 类型位于 /etc/mime.types,但如果您不确定,请尝试 locate mime.types

【讨论】:

【参考方案2】:

我已经看到使用带有 SSL 的 IE。如果您遇到这种情况,请查看 http://www.kalzumeus.com/2010/10/25/how-to-use-ssl-to-secure-your-rails-app-against-firesheep-and-other-evils/

(名为“在 SSL 上托管可下载文件?您刚刚破坏了 IE。”的部分。)

这也可能有帮助: Rails PDF Generation with Prawn in IE7

【讨论】:

以上是关于带有回形针 Docx content_type 的 Rails 以 application/zip 的形式返回的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3 回形针 mime 类型 - Office 2007

带有回形针的markdown中的image_tag

带有回形针的 If 语句 | Ruby on Rails

回形针 - 按图像比例进行条件裁剪

使用python发送带有(docx)附件的邮件

使用 ruby​​zip 在嵌套模型中下载回形针附件