PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie erkenne ich eine Textdatei von meinem Linux-PC über Django-Code, ohne ihre Erweiterung und auch ihre Dateigröße zu überprüfen?

Wahrscheinlich möchten Sie den MIME-Typ des Uploads unabhängig von der Dateierweiterung erkennen, und das geschieht häufig, indem Sie den Dateiheader lesen, um „magische Zahlen“ oder andere Bitmuster zu erkennen, die die wahre Natur einer Datei anzeigen. Oft sind Textdateien ein Grenzfall, wo kein Header erkannt wird und die ersten x Bytes druckbares ASCII oder Unicode sind.

Während das ein bisschen wie ein Kaninchenbau ist, in den man eintauchen kann, gibt es ein paar Python-Bibliotheken, die das für Sie erledigen. Zum Beispiel:https://github.com/ahupp/python-magic funktioniert für Ihre Bedürfnisse, indem es einfach den Mime-Typ aus dem Dateiinhalt herleitet, den Sie dann mit den Typen abgleichen, die Sie akzeptieren möchten.

Ein etwas verwandter Satz von Beispielcode, der speziell auf Ihre Bedürfnisse zugeschnitten ist, finden Sie hier:https://stackoverflow.com /a/28306825/7341881

Bearbeiten:Eddies Lösung entspricht der Funktionalität; python-magic umschließt libmagic, auf das der native „file“-Befehl von Linux zugreift. Wenn Sie sich für den Subprozess entscheiden, achten Sie besonders darauf, dass Sie keine Sicherheitslücke schaffen, indem Sie Benutzereingaben (z. B. den vom Benutzer bereitgestellten Dateinamen) nicht ordnungsgemäß bereinigen. Dies könnte zu einem Angriff führen, der willkürlichen Zugriff auf die Laufzeitumgebung Ihres Servers gewährt.