Динамически добавлять версии файлов в Carrierwave Uploader - PullRequest
3 голосов
/ 01 марта 2012

Я хотел бы использовать загрузчик CarrierWave, чтобы распаковать загруженный zip-файл, содержащий переменное количество файлов, и сохранить каждый из файлов в том же месте, где хранится zip-файл. Файлы должны быть доступны в модели, содержащей загрузчик.

Мне просто нужна отправная точка, как этого добиться.

1 Ответ

0 голосов
/ 03 марта 2012

Не уверен, что это на 100% актуально, но я только что создал контроллер Gallery, который принимает zip-файл и добавляет содержимое этого zip-файла как Images, связанное с моделью Gallery.

Я выполнил это, используя гем Zippy вместе с классом FilelessFile, который расширяет StringIO.

Каждый файл в zip-файле сохраняется как отдельная модель Image, смонтированная в формате carrieraw.

В вашем случае, я думаю, у вас может быть модель File (и загрузчик файлов), которая belongs_to ваша основная модель, а ваша основная модель имеет отношение has_many к модели File.

Об освобождении контроллера и "волшебной" обработке без файлов см .: https://gist.github.com/1963073

Примечание: Обратите внимание, что я не использую CarrierWave для обработки загрузки в zip-файл, я использую CarrierWave для сохранения файлов внутри zip-файла. Если вам необходимо также сохранить zip-файл, вы можете создать загрузчик ZipFile и смонтировать zip-файл на основной модели вместе с отдельными файлами или просто повторно использовать загрузчик File и сохранить zip-файл в поле на основной модели.

...