Buongiorno a tutti,
c'è modo di determinare il tipo di un file uploadato tramite una form (se è un documento Word, un PDF, un'immagine, un eseguibile...), INDIPENDENTEMENTE dall'estensione?
Kisses,
Nat
Buongiorno a tutti,
c'è modo di determinare il tipo di un file uploadato tramite una form (se è un documento Word, un PDF, un'immagine, un eseguibile...), INDIPENDENTEMENTE dall'estensione?
Kisses,
Nat
Se non vuoi controllare l estensione puoi usare il MIME type (qui ce un elenco http://www.utoronto.ca/webdocs/HTMLd.../mimetype.html), con $_FILES['nomefile']['type'], ma anche questo modo non sempre da risultati certi.
Un modo + sicuro è aprire il file con fopen() e controllarne i byte di intestazione, essendo ogni tipo di file strutturato in modo diverso dovresti crearti una funzione ad hoc, non so esista gia' qualcosa del genere pronto..
Sì, ti posso confermare che con l'array $_FILES non risolvo, per esempio, questo problema: ho il file "FormattaMacchina.exe", lo rinomino in "AnnaKournikova.gif", da $_FILES['file']['type'] ricavo "image/gif".
Altre idee, anche con fopen()?
Ma tu vorresti sapere il tipo di file qualunque esso sia, o ti interessa solo un numero ristretto?
Mmmm.... ho fatto un pò di prove.
In effetti, la cosa migliore da fare è:
a) determinare quali tipi di file accettare
b) creare una cartella protetta del web server in cui inserire un "esemplare" per ogni tipo accettato
c) con un semplice ciclo, ricavare le "firme" (ad es. i primi 16 byte) di tutti i tipi accettati, ed immagazzinarle in una tabella di database
d) ad ogni upload di file, fare fopen($_FILES['file']['tmp_name'], 16) e verificare se è presente nella tabella
Non sarà perfetto, ma insomma![]()
Cmq nn devi preoccuparti se qualcuno rinomina un exe in un jpg, tanto quel file sara' trattato come un jpg e nn visualizzera' nulla, gli upload funzionano cosi', ho fatto moltissimi siti con gli ulpoad e nn ce mai stato nessun problema.
![]()