私のモデル
class Article < ActiveRecord::Base
LOGO_TYPES = ['image/jpeg', 'image/png', 'image/gif']
VALID_LOGO_MESSAGE = 'Please attach a valid picture file containing your organization logo. Valid formats are JPG, PNG, and GIF'
has_attached_file :logo, :content_type => LOGO_TYPES,
:path => ":rails_root/app/assets/images/uploads/articlelogos/:id/:style/:basename.:extension",
:url => "/assets/uploads/articlelogos/:id/:style/:basename.:extension"
validates_attachment_content_type :logo, :content_type => LOGO_TYPES, :message => VALID_LOGO_MESSAGE
validates_attachment_size :logo, :less_than => 1.megabytes
end
Paperclip を使用して有効な 6k .gif ロゴをアップロードしようとすると、次のようになります。
Logo_file_size file size must be between 0 and 1024 bytes
リクエストのヒットとしてログに記録します:
Started PUT "/articles/74" for x.x.x.x at 2012-01-15 17:44:20 -0600
Processing by ArticlesController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"uI+OXmV3B/crOrUopbBxpRs242PzMVJY1uM/QBnHdlE=", "article"=>{"logo"=>#<ActionDispatch::Http::UploadedFile:0x000000081d70b0 @original_filename="test_logo.gif", @content_type="image/gif",
@headers="Content-Disposition: form-data; name=\"article[logo]\"; filename=\"test_logo.gif\"\r\nContent-Type: image/gif\r\n",
@tempfile=#<File:/tmp/RackMultipart20120115-30606-1wwkr21>>}, "commit"=>"Upload Now", "id"=>"74"}
そして、一時ファイルを表示するためにデバッグを追加しました
params[:article][:logo].inspect: #<File:/tmp/RackMultipart20120115-30606-1wwkr21>>
params[:article][:logo].size: 6531
したがって、サーバーに保存されていることは明らかですが、ペーパークリップはサイズを適切にチェックできていません。
これは開発モードのローカル Mac では機能しますが、Ubuntu での運用では失敗します。
何か案は?ありがとう!
更新 - サイズ検証を削除すると、ファイルを通常どおりアップロードして保存できます