Pergunta

Eu tenho um rubi aplicativo no qual freelancers pode concluir os trabalhos para um empregador.Quando o trabalho completo, o freelancer pode fazer o upload de arquivos para o empregador revisão.Eu acho que o freelancer deve ser capaz de fazer upload de arquivos zip, mas eu não quero que o freelancer para ser capaz de carregar inválido ou corrompido arquivos zip.Existe alguma maneira de parar este ou verificar se um arquivo é válido.Im certeza se há um método ou uma função para fazer isso, ele vai estar no rubyzip biblioteca, mas eu olhei através do seu documentação e não consegue encontrar o que estou procurando.

Foi útil?

Solução

Aqui é um ingênuo solução que tenta abrir um arquivo Zip, retornando true se ele trabalhou e false se um erro ocorreu:

require 'zip'

def valid_zip?(file)
  zip = Zip::File.open(file)
  true
rescue StandardError
  false
ensure
  zip.close if zip
end

Eu acredito que o formato ZIP inclui as somas de verificação CRC32 do seu conteúdo.Se você realmente precisa dele para ser super rápido, você pode ler os que estão fora do arquivo e verifique o checksum você ter calculado.

Outras dicas

Outra forma fácil seria apenas verificar com esta condição, se o arquivo está sendo carregado.

file = params[:file]

file.content_type.in?(['application/zip'])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top