sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan genkender jeg en tekstfil fra min linux pc via django-kode uden at kontrollere dens udvidelse og også dens filstørrelse?

Du ønsker sandsynligvis at detektere uploadens MIME-type uanset filtypenavnet, og det gøres ofte ved at læse filoverskriften for at detektere "magiske tal" eller andre bitmønstre, der indikerer en fils sande natur. Ofte er tekstfiler en kant-case, hvor der ikke registreres nogen header, og de første x bytes kan udskrives ASCII eller Unicode.

Selvom det er lidt af et kaninhul at dykke ned i, er der et par Python-biblioteker, der vil gøre det for dig. For eksempel:https://github.com/ahupp/python-magic vil fungere til dine behov ved blot at udlede mime-typen i henhold til filindholdet, som du derefter vil matche med de typer, du vil acceptere.

Et noget relateret sæt eksempelkode, der er specifikt til dine behov, kan findes her:https://stackoverflow.com /a/28306825/7341881

Edit:Eddies løsning svarer til funktionalitet; python-magic omslutter libmagic, hvilket er hvad Linuxs oprindelige "file"-kommando benytter sig af. Hvis du beslutter dig for at gå underprocesvejen, skal du være ekstra forsigtig med, at du ikke opretter en sikkerhedssårbarhed ved at rense brugerinput forkert (f.eks. brugerens angivne filnavn). Dette kan føre til et angreb, der giver vilkårlig adgang til din servers runtime-miljø.



  1. Hvordan renser (forhindrer SQL-injektion) dynamisk SQL i SQL Server?

  2. Forvirrende Ruby/MySQL-fejl:ugyldig pakke:sekvensnummer stemmer ikke overens

  3. Java - Undtagelse i trådens hoved java.lang.Error:Uløste kompileringsproblemer

  4. Kontrol af værdi i et array inde i én SQL-forespørgsel med WHERE-sætning