【问题标题】:Rails, S3, Paperclip changes attachment file .epp extension to .txtRails、S3、Paperclip 将附件文件 .epp 扩展名更改为 .txt
【发布时间】:2017-11-07 13:11:28
【问题描述】:

我无法正确设置我的应用程序,以存储带有.epp 扩展名(具有file -b --mime-type = text/plain)的附件并将它们提供给具有正确扩展名的用户(它更改为.txt)。

添加到初始化器之后:

Paperclip.options[:content_type_mappings] = {
  :epp => 'text/plain'
}

我能够将文件上传到 s3,而不会收到 spoofed_media_type 错误。但是,当我尝试为用户提供文件时:

redirect_to @job.file.expiring_url 

它使用.txt 扩展名下载。该文件在作业类中使用以下代码保存:

...
has_attached_file :file, :s3_permissions => 'authenticated-read', :s3_headers => {"Content-Disposition" => "attachment"}
do_not_validate_attachment_file_type :file
...
self.file = File.open(file_path)
self.save!

任何想法可能是什么问题?

更新: 实际上它只发生在 Chrome 上,Firefox 正确下载文件,所以它可能是浏览器问题...

【问题讨论】:

    标签: ruby-on-rails amazon-s3 paperclip attachment


    【解决方案1】:

    我猜你的 paperclip.rb 初始化器看起来像这样:

    Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
    Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
    

    尝试更改路径以包含扩展,如下所示:

    Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename.:extension'
    

    【讨论】:

    • 按照建议添加/:filename.:extension后,将filename.epp.epp保存到s3并下载为filename.epp.txt所以它不能解决问题,还是谢谢你
    • 我认为 s3 正在提供基于 mime 类型扩展名的文件,我不知道如何防止它;因为文件正确保存为filename.epp
    • 嗯。是的,我认为你是对的,因为这似乎是一个哑剧类型的问题。您是否尝试过将内容类型设置为application/octet-stream?来自 RFC rfc-editor.org/rfc/rfc2046.txt“'octet-stream' 子类型用于指示正​​文包含任意二进制数据。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多