1

アプリケーションを Google クラウドにデプロイすると、このエラーが発生するという問題があります

報告されているものとは異なるコンテンツを含む

ローカルでは問題なく動作します!私はすでにcommand_pathを使用しようとしました。だから、私は次に何をしなければならないのか本当にわかりません...

これは私のモデルです

has_mongoid_attached_file  :image,
    :styles => { :large => "380x380!" , :medium => "240x240", :small => "120x120!" },
    :storage => :fog,
    :fog_public => true,
    :fog_directory => 'XXXX',
    :path => "images/:id/:style/:basename.:extension",
    :fog_credentials => {  :provider => 'Google',
                           :google_storage_access_key_id => 'XXXXX',
                           :google_storage_secret_access_key => 'XXXXX'}

  validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]

ご尽力いただきありがとうございます。皆さんが私を助けてくれることを願っています

4

3 に答える 3

4

この問題は、コマンドから検出された content-typefileが空の文字列を返すために発生します。実際には、システムはfile実行可能ファイルを見つけることができないため、例外が発生し、空の文字列が返されます。以下のコードを確認してください

begin
    Paperclip.run("file", "-b --mime :file", :file => '/tmp/RackMultipart20160826-15649-kwvnq2.png').split(/[:;]\s+/).first
rescue Cocaine::CommandLineError
    ""
end

解決:-

以下の行をイニシャライザ ファイルに追加します。

Paperclip.options[:command_path] = '/usr/bin'
于 2016-08-26T19:25:35.257 に答える
0

Google Cloud は、アップロードされたファイルの MIME タイプを判別できないようです。

ファイル拡張子をイニシャライザ ( application.rbproduction.rbまたは create initializers/paperclip.rb)でタイプにマップできます。

Paperclip.options[:content_type_mappings] = {
  :jpg => "image/jpeg",
  :png => "image/png",
  :gif => "image/gif"
}

ただし、この方法では、画像ファイルのなりすましチェックは実行されません。

于 2016-03-26T22:07:44.917 に答える