Вопрос

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

Я хочу открыть ZIP-файл в своем действии без необходимости сначала сохранять файл в папке - я хочу открыть поток данных multipart/form-data с помощью Rubyzip.

Похоже, что ZipFile.open Rubyzip принимает только имя файла, а не поток ввода-вывода.

Что мне нужно изменить в Rubyzip, чтобы я мог открывать zip-файл как поток, например:

Zip::ZipFile.open(params["zip_file"]) do |zip_file|
 ...
end

Спасибо.Йорг

Это было полезно?

Решение

С использованием

Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
 ...
end

должно сработать.

Другие советы

Я дам тебе совет, о котором ты не просил.

Я настоятельно рекомендую вам не выполнять эту операцию из вашего действия, поскольку она заблокирует процесс Rails, связанный с этим HTTP-запросом, на время, необходимое для выполнения извлечения.Ваш пользовательский интерфейс для этого пользователя перестанет отвечать на запросы, и если достаточное количество пользователей сделают это одновременно (вы ограничиваете размер загружаемого файла, верно?), то вы фактически получите Отказ в обслуживании атака происходит против вашего приложения.

  • Запустите извлечение как асинхронное фоновое задание из вашего действия.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top