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

Foi útil?

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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top