2013-07-26 7 views
0

J'ai un script qui télécharge un fichier. Il vérifie le type mime (devrait être un fichier audio), puis le télécharge. Le type semble être reconnu mais il donne une sortie "fichier invalide". Est-ce que je manque quelque chose d'évident?Téléchargement de fichier php - type MIME invalide?

Upload: songname.mp3 
Type: audio/mpeg 
Size: 4.5997314453125 MB 
Invalid file 

Et une partie du script:

if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
    } 
else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/(1024*1024)) . " MB<br>"; 
    } 
    $allowedExts = array("gif", "jpeg", "jpg", "png"); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "audio/mpeg") 
|| ($_FILES["file"]["type"] == "audio/x-mpeg") 
|| ($_FILES["file"]["type"] == "audio/mp3") 
|| ($_FILES["file"]["type"] == "audio/x-mp3") 
|| ($_FILES["file"]["type"] == "audio/mpeg3") 
|| ($_FILES["file"]["type"] == "audio/x-mpeg3") 
|| ($_FILES["file"]["type"] == "audio/mpg") 
|| ($_FILES["file"]["type"] == "audio/x-mpg") 
|| ($_FILES["file"]["type"] == "audio/x-mpegaudio") 
|| ($_FILES["file"]["type"] == "audio/wav") 
|| ($_FILES["file"]["type"] == "audio/x-wav") 
|| ($_FILES["file"]["type"] == "audio/ogg")) 
&& ($_FILES["file"]["size"] < 20000000) 
&& in_array($extension, $allowedExts)) 
    {;; 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    {//something 
    } 

    if (file_exists("../sites/default/files/dance/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "../sites/default/files/dance/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "../sites/default/files/dance/" . $_FILES["file"]["name"]; 
     }  
    } 
else 
    { 
    echo "Invalid file"; 
    } 
+0

Vous pouvez placer tous types autorisés dans un tableau et utiliser in_array pour raccourcir que si déclaration. –

+0

'mp3' n'est pas dans allowed_exts. –

Répondre

2

vous avez autorisé des extensions comme ceci:

$allowedExts = array("gif", "jpeg", "jpg", "png"); 

vous devriez essayer au moins:

$allowedExts = array("mp3","wav","ogg"); 
+0

Oh mon dieu, alors regardé ça! Merci! – dorien