05-03-2009, 03:14 AM
Bonjour.
Je te réponds en vitesse :
ne pas oublier dans le forumulaire l'attribut : enctype='multipart/form-data'
dans la balise <form> sinon l'image ne passera pas d'où la délicieuse allusion au mime Marceau dans la réponse précédente.
Ensuite je te donne le code que j'ai testé avec l'explication sur ce qui n'allait pas :
Formulaire primitif sans DTD (c'est mal)
<html>
<form action='test_45.php' method='post' enctype='multipart/form-data'>
<input type='hidden' name='ok' value='ok' />
<input type='file' name='upload' /><input type="submit" />
</form>
</html>
<?php
if( isset($_POST['ok']) ) // si formulaire soumis
{
$tmp_file = $_FILES['upload']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
// NON $_FILES['upload']['type'] donne le type mime, par exemple image/jpg et non l'extension
// Je vérifie donc que le mot image se trouve dans le type mime.
// On aurait pu aussi vérifier l'extension mais pas comme tu essayais de le faire
if(!eregi('image/', $_FILES['upload']['type']))
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination. je copie sur place pour simplifier
$name_file = $_FILES['upload']['name'];
if( !move_uploaded_file($tmp_file,$name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo "Le fichier a bien été uploadé";
}
?>
Amicalement,
Sylvain.
Je te réponds en vitesse :
ne pas oublier dans le forumulaire l'attribut : enctype='multipart/form-data'
dans la balise <form> sinon l'image ne passera pas d'où la délicieuse allusion au mime Marceau dans la réponse précédente.
Ensuite je te donne le code que j'ai testé avec l'explication sur ce qui n'allait pas :
Formulaire primitif sans DTD (c'est mal)
<html>
<form action='test_45.php' method='post' enctype='multipart/form-data'>
<input type='hidden' name='ok' value='ok' />
<input type='file' name='upload' /><input type="submit" />
</form>
</html>
<?php
if( isset($_POST['ok']) ) // si formulaire soumis
{
$tmp_file = $_FILES['upload']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
// NON $_FILES['upload']['type'] donne le type mime, par exemple image/jpg et non l'extension
// Je vérifie donc que le mot image se trouve dans le type mime.
// On aurait pu aussi vérifier l'extension mais pas comme tu essayais de le faire
if(!eregi('image/', $_FILES['upload']['type']))
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination. je copie sur place pour simplifier
$name_file = $_FILES['upload']['name'];
if( !move_uploaded_file($tmp_file,$name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo "Le fichier a bien été uploadé";
}
?>
Amicalement,
Sylvain.