Код состояния 422 Unprocessable Entity - Скрепка, ImageMagick & Rails 3 - PullRequest
1 голос
/ 21 февраля 2011

Я не уверен, что является причиной этого, и хотел бы немного постичь:

Started POST "/uploads.js" for 127.0.0.1 at 2011-02-21 09:14:36 -0500
  Processing by UploadsController#create as JS
  Parameters: {"name"=>"DSC_0561.JPG", "chunk"=>"0", "chunks"=>"1", "upload"=>{"stage_id"=>"16"}, "authenticity_token"=>"SfNGZm4lP56eG94OliSo2Kk9Tikg+X2pHaGoRLdbUmg=", "file"=>#<ActionDispatch::Http::UploadedFile:0x000001080f7ce8 @original_filename="DSC_0561.JPG", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"DSC_0561.JPG\"\r\nContent-Type: application/octet-stream\r\n", @tempfile=#<File:/var/folders/+u/+u1vHpefHhSOuO43TGuqe++++TI/-Tmp-/RackMultipart20110221-9189-1ig5c62>>}

[paperclip] identify -format %wx%h '/var/folders/+u/+u1vHpefHhSOuO43TGuqe++++TI/-Tmp-/stream20110221-9189-1o6ij3e.JPG[0]' 2>/dev/null
[paperclip] convert '/var/folders/+u/+u1vHpefHhSOuO43TGuqe++++TI/-Tmp-/stream20110221-9189-1o6ij3e.JPG[0]' -resize "64x64" '/var/folders/+u/+u1vHpefHhSOuO43TGuqe++++TI/-Tmp-/stream20110221-9189-1o6ij3e20110221-9189-kssuro' 2>/dev/null
Completed 422 Unprocessable Entity in 1143ms (Views: 0.8ms | ActiveRecord: 1.5ms)

Не уверен, что Paperclip выдает эту ошибку, или это ImageMagick или что-то еще.

Edit1:Таким образом, похоже, что он выдавал эту ошибку, потому что файл, который я загружал, имел расширение как «.JPG», и как только я изменил его на «.jpg», это сработало.Но я не уверен, как это исправить.

1 Ответ

2 голосов
/ 21 февраля 2011

Rails, возвращающий код состояния 422, означает, что проверка завершилась неудачно, поэтому вы, вероятно, проверяете тип содержимого загрузки, но он всегда application/octet-stream, потому что то, с чем вы загружаете, не устанавливает его должным образом.

Вы можете использоватьmime-types гем, чтобы исправить это, но в идеале вы должны исправить код загрузки, чтобы правильно установить тип пантомимы.

mime_types = MIME::Types.type_for(params[:file])
file.content_type = mime_types.first.to_s if mime_types.first
...