Kann ich in Rails überprüfen, ob eine hochgeladene ZIP-Datei beschädigt oder ungültig ist?
-
24-12-2019 - |
Frage
Ich habe eine Ruby-App, mit der Freiberufler Aufträge für einen Arbeitgeber erledigen können.Wenn der Auftrag abgeschlossen ist, kann der Freiberufler Dateien hochladen, damit der Arbeitgeber sie überprüfen kann.Ich denke, der Freiberufler sollte in der Lage sein, ZIP-Dateien hochzuladen, aber ich möchte nicht, dass der Freiberufler ungültige oder beschädigte ZIP-Dateien hochladen kann.Gibt es eine Möglichkeit, dies zu stoppen oder zu überprüfen, ob eine Datei gültig ist?Ich bin mir ziemlich sicher, ob es eine Methode oder Funktion dafür gibt, diese in der Rubyzip-Bibliothek zu finden, aber ich habe die Dokumentation durchgesehen und kann nicht finden, wonach ich suche.
Lösung
Hier ist eine naive Lösung, die versucht, ein Zip-Archiv zu öffnen und zurückzugeben true
ob es funktioniert hat und false
wenn ein Fehler aufgetreten ist:
require 'zip'
def valid_zip?(file)
zip = Zip::File.open(file)
true
rescue StandardError
false
ensure
zip.close if zip
end
Ich glaube, dass das ZIP-Format CRC32-Prüfsummen seines Inhalts enthält.Wenn es wirklich superschnell sein soll, können Sie diese aus der Datei auslesen und mit der von Ihnen berechneten Prüfsumme vergleichen.
Andere Tipps
Eine andere einfache Möglichkeit wäre, einfach mit dieser Bedingung zu überprüfen, wenn die Datei hochgeladen wird.
generasacodicetagpre.