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";
}
Vous pouvez placer tous types autorisés dans un tableau et utiliser in_array pour raccourcir que si déclaration. –
'mp3' n'est pas dans allowed_exts. –