拡張子なし、application/octet-stream のアップロード

区分
Rails
報告者

こんにちは、tahara です。

Android からのファイルアップロードはエントロピーの神々に支配されているのでしょうか? 拡張子なし、Content-Type: application/octet-stream で jpeg ファイルが ブラウザから POST されたりします。

そんな POST に対応するには(Paperclip 使用)...

class TempFile < ActiveRecord::Base
  has_attached_file :temp
  before_post_process :ensure_temp_file_name_extension

  protected

  def ensure_temp_file_name_extension
    return true unless File.extname(self.temp_file_name) == ''

    unless VALID_IMAGE_CONTENT_TYPE.include?(self.temp_content_type)
      file = Paperclip.io_adapters.for(temp)
      self.temp_content_type =
        Paperclip::FileCommandContentTypeDetector.new(file.path).detect
    end

    extension = MIME::Types[self.temp_content_type].first.extensions.first rescue nil
    if extension
      self.temp_file_name = self.temp_file_name + '.' + extension
    end
    true
  end
end

エンジニアとかプログラマとか募集中です。

トップページに戻る

技師部隊からの
お知らせ

【求人】エンジニア募集しています。

本頁の来客数
八十七万千百七十六名以上(計測停止中)

メンバー一覧

アクトインディ技師部隊員名簿

アクトインディ技師部元隊員

アクトインディへ

カテゴリー

アクトインディ

aaaa