sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur känner jag igen en textfil från min linux-dator via django-kod utan att kontrollera dess förlängning och även dess filstorlek?

Du vill förmodligen upptäcka uppladdningens MIME-typ oavsett filtillägg, och det görs ofta genom att läsa filhuvudet för att upptäcka "magiska siffror" eller andra bitmönster som indikerar en fils sanna natur. Ofta är textfiler ett kantfall, där ingen rubrik upptäcks och de första x byte är utskrivbara ASCII eller Unicode.

Även om det är lite av ett kaninhål att dyka ner i, finns det några Python-bibliotek som kommer att göra det åt dig. Till exempel:https://github.com/ahupp/python-magic kommer att fungera för dina behov genom att helt enkelt härleda mime-typen per filinnehållet, som du sedan matchar mot de typer du vill acceptera.

En något relaterad uppsättning exempelkod som är specifik för dina behov finns här:https://stackoverflow.com /a/28306825/7341881

Edit:Eddies lösning motsvarar funktionalitet; python-magic omsluter libmagic, vilket är vad Linuxs ursprungliga "fil"-kommando använder sig av. Om du bestämmer dig för att gå underprocessvägen, var extra försiktig att du inte skapar en säkerhetsrisk genom att felaktigt sanera användarinmatning (t.ex. användarens angivna filnamn). Detta kan leda till en attack som ger godtycklig åtkomst till din servers runtime-miljö.



  1. Hur man beräknar retention månad över månad med SQL

  2. Gör det enklare att hantera en PostgreSQL-produktionsdatabas

  3. Inbäddade PostgreSQL för Java JUnit-tester

  4. Har problem med UnixODBC, FreeTDS och PyODBC