0

Rails 3 + paperclip + s3 (プライベート バケット) を使用して、ユーザーがファイルをアップロードできるようにしています。

壊れているのは、ユーザーが「gemfile.txt」ではなく「gemfile」である Rails gemfile のような拡張子なしのファイルをアップロードできることです。このファイルをアップロードすると、paperclip は attachment_content_type を設定しません。

次のように content_type を決定しています。

self.attachment.instance_write(:content_type, MIME::Types.type_for(self.attachment_file_name).to_s)

より信頼性が高く、上記のバグを解決するより良い方法はありますか? ありがとう

4

1 に答える 1

1

MIME::Types に、指定されたファイル名のタイプを見つけるように求めています。attachment_file_name にファイル拡張子があることを期待しています (image_12.jpg拡張子は.jpgであるため、MIME::Types.type_forファイルが画像であることがわかります)。

あなたが探しているもの:

params[:image].content_type # return the content_type
# assuming :image is the name of the form file field

ちょっとした研究:

ファイル拡張子に基づいて、ファイルに属する MIME::Types のリストを返します。

http://mime-types.rubyforge.org/MIME/Types.html + ctrl-F "type_for"

于 2012-12-05T20:09:17.133 に答える