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

Come riconoscere un file di testo dal mio PC Linux tramite codice django senza controllarne l'estensione e anche la dimensione del file?

Probabilmente vuoi rilevare il tipo MIME del caricamento indipendentemente dall'estensione del file, e ciò viene spesso fatto leggendo l'intestazione del file per rilevare "numeri magici" o altri schemi di bit che indicano la vera natura di un file. Spesso i file di testo sono un caso limite, in cui non viene rilevata alcuna intestazione e i primi x byte sono ASCII o Unicode stampabili.

Anche se è un po' una tana di coniglio in cui tuffarsi, ci sono alcune librerie Python che lo faranno per te. Ad esempio:https://github.com/ahupp/python-magic funzionerà per le tue esigenze semplicemente deducendo il tipo mime in base al contenuto del file, che poi abbinerai ai tipi che desideri accettare.

Un insieme di codice di esempio in qualche modo correlato specifico per le tue esigenze può essere trovato qui:https://stackoverflow.com /a/28306825/7341881

Modifica:la soluzione di Eddie è equivalente alla funzionalità; python-magic avvolge libmagic, che è ciò a cui attinge il comando "file" nativo di Linux. Se decidi di seguire il percorso del sottoprocesso, fai molta attenzione a non creare una vulnerabilità di sicurezza disinfettando in modo improprio l'input dell'utente (ad esempio il nome del file fornito dall'utente). Ciò potrebbe portare a un attacco che garantisce l'accesso arbitrario all'ambiente di runtime del tuo server.