Открытие ZIP-файла multipart/form-data с помощью Rubyzip
-
11-09-2019 - |
Вопрос
Я хочу извлечь файлы из 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-запросом, на время, необходимое для выполнения извлечения.Ваш пользовательский интерфейс для этого пользователя перестанет отвечать на запросы, и если достаточное количество пользователей сделают это одновременно (вы ограничиваете размер загружаемого файла, верно?), то вы фактически получите Отказ в обслуживании атака происходит против вашего приложения.
- Запустите извлечение как асинхронное фоновое задание из вашего действия.