Buon giorno, avrei risolto in parte,ma ho una curiosità.
Praticamente, testando con Firefox, fino a qualche minuto fà credevo che l'upload, una volta individuati i formati consentiti, potesse andare bene per tutti i browser.
Lo script che gestisce l'upload è questo:
Codice PHP:
//da form
<input type="file" name="txtAllegato"/>
//da UploadAllegati.php
<?php
$txtAllegato = @$_FILES['txtAllegato']['tmp_name'];
if($txtAllegato=="" || $txtAllegato=="NULL"){
$txtAllegato = "Nessun Allegato";
}
else{
var_dump($_FILES['txtAllegato']['type']);
$allowed_types = array('application/txt','application/pdf','application/msword','text/plain','text/html','application/rtf','text/richtext','application/zip','application/x-rar-compressed');
if(!in_array($_FILES['txtAllegato']['type'],$allowed_types)) {
echo "il File non è di tipo consentito";
}
else{
echo "il file è stato caricato";
}
}
?>
Facendo in questo modo mi sono accorto che eseguendo un var_dump sul tipo di allegato mi risultava che con:
- FireFox ed Opera lo interpretava cosi (string(28) "application/x-rar-compressed")
- Chrome cosi (string(0) "")
- IE, Safari ancora diverso (string(24) "application/octet-stream")
Quindi avendo visto che IE e Safari mi restituivano "application/octet-stream", questo tipo l'ho aggiunto al resto risultando quindi:
Codice PHP:
$allowed_types = array('application/txt','application/pdf','application/msword','text/plain','text/html','application/rtf','text/richtext','application/zip','application/x-rar-compressed','application/octet-stream');
Ora però, resta il problema di Chrome, e sorge un dubbio.
Vedendo cosa mi restituisce il var_dump, ne deduco che Chrome non interpreti l'invio "$_FILES['txtAllegato']['tmp_name']" perchè mi restituisce string(0) "".
Quindi la mia domanda è:
c'è uno script per il controllo del tipo del file che vada bene per tutti i browser?
Grazie mille..