Abrir um arquivo multipart / form-data ZIP com rubyzip
-
11-09-2019 - |
Pergunta
Eu quero extrair os arquivos dentro de um arquivo ZIP que eu enviei para meu aplicativo Rails. Os arquivos dentro do arquivo ZIP vão ser armazenados no banco de dados.
Eu quero abrir o arquivo ZIP na minha ação, sem primeiro ter que salvar o arquivo para uma pasta -. Quero abrir o fluxo multipart / form-data com rubyzip
Parece que ZipFile.open de rubyzip só tem um nome de arquivo -. Não um fluxo de IO
O que é necessário para a mudança dentro rubyzip, para permitir-me para abrir o arquivo zip como um fluxo, como este:
Zip::ZipFile.open(params["zip_file"]) do |zip_file|
...
end
Graças. Joerg
Solução
Usando
Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
...
end
deve funcionar.
Outras dicas
Eu estou indo dar-lhe alguns conselhos que você não pediu.
Eu recomendo fortemente que você não executar esta operação a partir de dentro de sua ação, porque vai bloquear os Rails processo associado a este pedido HTTP durante o tempo que for preciso para realizar a extração. Sua interface do usuário para que o usuário vai ficar sem resposta e se os usuários o suficiente fazer isso ao mesmo tempo (você está limitando o tamanho de upload de arquivos, certo?), Então você efetivamente tem um Denial of Service ataque acontecendo contra a sua aplicação.
- Inicie a extracção como um trabalho em segundo plano assíncrona de dentro da sua acção.