sql >> Database >  >> RDS >> PostgreSQL

Hoe herken ik een tekstbestand van mijn Linux-pc via django-code zonder de extensie en ook de bestandsgrootte te controleren?

U wilt waarschijnlijk het MIME-type van de upload detecteren, ongeacht de bestandsextensie, en dat wordt vaak gedaan door de bestandskop te lezen om "magische getallen" of andere bitpatronen te detecteren die de ware aard van een bestand aangeven. Vaak zijn tekstbestanden een randgeval, waarbij geen header wordt gedetecteerd en de eerste x bytes afdrukbare ASCII of Unicode zijn.

Hoewel dat een beetje een konijnenhol is om in te duiken, zijn er een paar Python-bibliotheken die dat voor je zullen doen. Bijvoorbeeld:https://github.com/ahupp/python-magic werkt voor uw behoeften door simpelweg het mime-type af te leiden uit de bestandsinhoud, die u vervolgens vergelijkt met de typen die u wilt accepteren.

Een enigszins verwante reeks voorbeeldcode die specifiek is voor uw behoeften, vindt u hier:https://stackoverflow.com /a/28306825/7341881

Bewerken:Eddie's oplossing is functioneel equivalent; python-magic omhult libmagic, waar Linux's native "file" -opdracht op inspeelt. Als u besluit om de subprocesroute te volgen, wees dan extra voorzichtig dat u geen beveiligingskwetsbaarheid creëert door gebruikersinvoer op onjuiste wijze te zuiveren (bijv. de door de gebruiker opgegeven bestandsnaam). Dit kan leiden tot een aanval die willekeurige toegang verleent tot de runtime-omgeving van uw server.



  1. PHP PDO transactie Dupliceren

  2. MySQL Workbench:kan geen verbinding maken met MySQL-server op 127.0.0.1' (10061) fout

  3. Hoe u foutaggregatiefuncties kunt vermijden, zijn niet toegestaan ​​in WHERE

  4. Hoe voeg ik een ruimtelijk mysql-punt in met een yii-model?