Domanda

Ho un'app rubino in cui i freelance possono completare i lavori per un datore di lavoro.Quando il lavoro è completo, il freelancer può caricare file per il datore di lavoro da revisione.Penso che il freelancer dovrebbe essere in grado di caricare file zip, ma non voglio che il freelancer fosse in grado di caricare file ZIP non validi o corrotti.C'è un modo per fermare questo o controllare se un file è valido.Sono abbastanza sicuro che se c'è un metodo o una funzione per farlo, sarà nella Biblioteca Rubyzip, ma ho guardato attraverso la loro documentazione e non riesco a trovare quello che sto cercando.

È stato utile?

Soluzione

Ecco una soluzione ingenua che cerca di aprire un archivio ZIP, restituire true se ha funzionato e false se si è verificato un errore:

require 'zip'

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

Credo che il formato ZIP includa i checksum CRC32 dei suoi contenuti.Se hai davvero bisogno che sia super veloce, potresti leggere quelli fuori dal file e controllare contro il checksum che hai calcolato.

Altri suggerimenti

Un altro modo semplice sarebbe essere semplicemente controlla con questa condizione, se il file viene caricato.

file = params[:file]

file.content_type.in?(['application/zip'])
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top