Использование Paperclip для прямой загрузки файлов на S3 - PullRequest
9 голосов
/ 18 февраля 2011

так что у меня есть настроенная скрепка с uploadify для загрузки вещей в S3.Я сделал свои настройки так, чтобы материал загружался непосредственно в S3, а затем, когда это было сделано, я отправляю на свой веб-сервер результаты ...

Все, что я получаю, - это имя файла и размер.я должен построить свой собственный процессор или метод before_post_process, чтобы «загрузить» файл с S3 для его обработки?или я что-то упустил, и uploadify должен был предоставить мне поток с файлом внутри него после того, как он закончил публиковать на S3?

Как вы, ребята, идете о прямой загрузке на S3 и затем уведомляете вашу модель с помощью скрепки?Нужно ли извлекать файлы с сервера и выполнять на них постобработку, или скрепка справится со всем этим?

Ответы [ 2 ]

8 голосов
/ 27 мая 2011

Вот пара сообщений в блоге, описывающих, как это сделать ...

http://www.railstoolkit.com/posts/uploading-files-directly-to-amazon-s3-using-fancyupload

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

Они используют FancyUploader (который использует MooTools / Flash) для прямой загрузки на S3, минуя Heroku и их ужасный 30-секундный тайм-аут запроса, а затем используйте DelayedJob для постановки в очередь задач постобработки, таких как миниатюры и PaperClip, для фактической обработки файлов.

ЕслиЯ могу заставить это работать с CarrierWave, я опубликую проект на GitHub, чтобы поделиться (через неделю или около того, как только у меня будет время)

Обновление :

Примерпроект, использующий Rails 3, Flash и основанный на MooTools FancyUploader для загрузки непосредственно в S3: https://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader

Пример проекта, использующий Rails 3, Flash / Silverlight / GoogleGears / BrowserPlus и jQuery-интерфейс Plupload для загрузки непосредственно в S3:https://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload

Я добавлю пример постобработки, как только у меня будет время.

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

Вы можете создать процессор или использовать методы обратного вызова, но файл обязательно будет на вашем сервере, прежде чем перейти к S3.

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

self.file.to_file

По завершении обработки и загрузки файл будет удален с вашего сервера.Вам не нужно ничего делать, чтобы уведомить или опубликовать процесс.Скрепка справится с этим.

...