Rails Доступ к загруженному файлу и его сохранение в PaperClip - PullRequest
6 голосов
/ 25 января 2011

Я использую следующий загрузчик файлов с Rails 3: https://github.com/blueimp/jQuery-File-Upload

Загрузчик на стороне клиента работает нормально. В файле журнала Rails я вижу, что при загрузке файла публикуется следующее:

Started POST "/attachments/upload" for 127.0.0.1 at Mon Jan 24 14:15:25 -0800 2011
  Processing by AttachmentsController#upload as */*
  Parameters: {"_http_accept"=>"application/javascript", "authenticity_token"=>"F1h9pvCZL9HUgTjwCIAMc%252BW1cYwx7eBOPwThHfbS5ZU%253D", "file"=>#<ActionDispatch::Http::UploadedFile:0x1076a6d48 @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"joecocker.jpg\"\r\nContent-Type: image/jpeg\r\n", @original_filename="joecocker.jpg", @tempfile=#<File:/var/folders/lF/lF0Ne5vGFj44kV54W3zBdU+++TI/-Tmp-/RackMultipart20110124-12264-rbtnth-0>>}

У меня проблема в том, что я не могу сохранить загруженный файл в Paperclip.

Я ездила:

@attachment = Attachment.create(:attachment => File.open(params[:file].tempfile.path))
@attachment = Attachment.create(:attachment => params[:file].tempfile.path)

И ни одна из них не работает. Скрепка вставляет имя вложенного файла «RackMultipart20110124-12264-rbtnth-0»

Любые идеи / предложения о том, как сохранить файл в скрепку? спасибо

Ответы [ 3 ]

11 голосов
/ 25 января 2011

Просто используйте params[:file] для доступа к файлу.Не нужно делать params[:file].tempfile.path.Скрепка берет полный File -подобный объект.

1 голос
/ 10 июня 2011

это может быть в случае, если у вас есть проблемы с разрешениями.Скрепка по умолчанию создает папку с именем системы в общей папке и там он сохраняет все вложения.Проверьте разрешение на каталог вашего проекта.Для тестирования установите значение 777

Во-вторых, вам не нужно сохранять вложения вручную.Как только вы используете скрепку, она автоматически сохранит прикрепленный файл.Чтобы все пошло как надо, вам необходимо выполнить следующие шаги.

  1. Вы добавили эту строку в модель has_attached_file: avatar
  2. Вы создали миграцию скрепки и запустили миграцию. ВыМожно сгенерировать миграцию с помощью следующих командных направляющих. g Скрепка «Имя модели» avatar (где аватар будет использоваться для обработки вложений.)
  3. На странице просмотра, на которую вы загружаете файл, используйте просто f.file_field: avatar
  4. в вашем файле шоу / индекса используйте image_tag: avatar.url (: small), я предполагаю прикрепление изображения, и вы применили стиль к своему изображению, как маленький палец и т. д.

После выполнения вышеуказанного шага просто запустите вашу программу, она будет работать.

0 голосов
/ 03 мая 2011

Трудно сказать, не видя код вашей модели, но, основываясь на том, что я вижу, я бы попробовал:

@attachment = Attachment.create(params[:file])
...