Aide upload de fichier PHP
Résolu
Bonjour tout le monde!!
Voila je cherche à faire un upload de fichier par php, j'ai regardé sur internet, piqué des bout de codes à droite, à gauche et j'arrive à ça:
[quote]<?php
$dossier = 'upload/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 2000000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>/quote
Le problème c'est que je 'narrive pas à upload, je rentre toujours dans le dernier "else" qui est l'echec de l'upload.
Perso j'ai un doute sur la ligne : if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
mais comme je la comprend pas entierement, je peux pas trop me prononcer.
Merci d'avance à ceux qui pourront m'aider!
Voila je cherche à faire un upload de fichier par php, j'ai regardé sur internet, piqué des bout de codes à droite, à gauche et j'arrive à ça:
[quote]<?php
$dossier = 'upload/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 2000000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>/quote
Le problème c'est que je 'narrive pas à upload, je rentre toujours dans le dernier "else" qui est l'echec de l'upload.
Perso j'ai un doute sur la ligne : if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
mais comme je la comprend pas entierement, je peux pas trop me prononcer.
Merci d'avance à ceux qui pourront m'aider!
Configuration: Windows XP Firefox 2.0.0.14
22 réponses
-
ContributeurMais c'est avec plaisir que j'aide ...
En esspérant bientôt te revoir sur CCM ;D -
En effet, avec le point sa marche! Merci beaucoup une fois de plus ;)
-
ContributeurPour certains systèmes, tel que unix, il y a une grande différence. Pour Wamp, je ne sais pas s'il accepte sans, mais c'est plus propre de faire avec.
-
D'accord je vais essayer sa, mais pk pense tu qu'il vaut mieu mettre un point devant le 1er / ??
-
ContributeurIl faut faire attention à un truc ... Apache est sensible à la casse, c'est à dire aux majuscules et aux minuscules.
Avant, dans ton script, t'as mis "upload", et là t'as mis "Upload".
Encore un petit truc, au lieu de mettre$Fnm = "/Upload/fichier_à_supprimer.qqchose";<code>, mets plutôt <code>$Fnm = "./Upload/fichier_à_supprimer.qqchose";
Le . sert à lui dire que tu parts depuis le dossier où est exécuté le script. -
Sa me met ça comme erreur :
Warning: unlink(/Upload/icone.jpg) [function.unlink]: No such file or directory in C:\wamp\www\Stage\test.php on line 5
fichier supprimé
Je pense avoir tous les droits sur le fichier, puisque je suis en local, en admin, et que le fichier, s'en est un que j'ai mis grace au formulaire de "upload" -
ContributeurIl te donne quoi comme erreur ?
T'es sur que t'as tous les droits sur le ficher ? -
Le probleme c'est que je n'ai pas encore mon serveur, et donc que je ne peux pas ctester cette fonction sous WAMP ou alors je ne sais pas le faire ... :s
J'avais lu un truc sur un forum qui été plutot du genre :
<?php
$Fnm = "/Upload/fichier_à_supprimer.qqchose";
unlink($Fnm);
echo 'fichier supprimé';
?>
Mais malheureusement je n'arrive pas à faire fonctionner cette fonction :s -
ContributeurT'as la fonction ftp_delete qui te fait ça : manuel ici.
-
Merci encore pour ces info, ça marche niquel!
Maintenant si tu pouvais m'aider pour la suppression de fichier sur un ftp, sa seré super sympa ^^
Merci encore -
ContributeurMais c'est tout normal que je partage mes connaissances ... ;D
Pour le renommage, t'as essayé la fonction rename ? -
J'ai encore un petit problème lié à l'upload.
Je voudrais renommer automaitiquement le fichier uploader par les variables $année et $sexe concaténée.
J'ai donc essayer plusieurs solution, que j'ai cherché sur internet mais je n'y arrive pas, peut importe ce que je fasse, le fichier garde le meme nom ... :s
Peux tu m'aider une derniere fois stp? -
ça marche!!!
Merci beaucoup, je ne pensai pas que sa puisse etre une erreur aussi ridicule ^^
En tout cas merci beaucoup de ton aide!! -
ha non c'est peut etre parce qu'il n'existe pas. Je vais le créer et essayer et je te reponds après!
Merci -
ContributeurJ'ai la même erreur seulement si je met un dossier de destination qui n'existe pas ...
Est-ce qu'il existe ? Si oui, est-t-il libre en écriture ? -
Pour l'instant je met mon site en place sous Wamp et il me renvoie cette erreur:
Warning: move_uploaded_file(upload/Fond.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\wamp\www\Stage\test.php on line 27
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\php2B.tmp' to 'upload/Fond.JPG' in C:\wamp\www\Stage\test.php on line 27
Impossible de copier le fichier dans upload/
Je comprends pas trop si sa vient de Wamp ou de mon code :s -
ContributeurC'est bisard ... les deux scripts vont parfaitement chez moi ...
T'as quoi exactement comme erreur ? Une de la part de PHP ou une que t'as créer toi-même ?
Personnellement, je préfère le deuxième (composition du code), mais c'est perso ... le résultat sera le même ... -
ContributeurOk, merci, je vias voir ça ....
-
Voici le formulaire:
<form name="frm_1" method="POST" ENCTYPE="multipart/form-data" action="trait.php">
<table class="tab">
<tr><td>   </td><td>   </td></tr>
<tr>
<td>Année:</td><td><input type="text" name="Annee"></td>
<tr><td>   </td><td>   </td></tr>
<tr>
<td>Vainqueur:</td><td><input type="text" name="Vainqueur"></td>
</tr>
<tr><td>   </td><td>   </td></tr>
<tr>
<td>Pays du vainqueur:</td><td><input type="text" name="PaysV"></td>
</tr>
<tr><td>   </td><td>   </td></tr>
<tr>
<td>Finaliste:</td><td><input type="text" name="Finaliste"></td>
</tr>
<tr><td>   </td><td>   </td></tr>
<tr>
<td>Pays du finaliste:</td><td><input type="text" name="PaysF"></td>
</tr>
<tr><td>   </td><td>   </td></tr>
<tr>
<td>Sexe:</td><td>Garçon:<input type="radio" name="Sexe" value="M"></td><td>Fille:<input type="radio" name="Sexe" value="F"></td>
<tr><td>   </td><td>   </td></tr>
<tr><td> Photo: </td><td> <input type="file" name="photo"></td></tr>
<tr><td>   </td><td>   </td></tr>
<tr>
<td><input type="submit" name="upload" value="Valider"></td>
</tr>
<tr><td>   </td><td>   </td></tr>
<input type="hidden" name="choix" value="1">
</table>
</form>
Et voici le traitement php sur l'autre page:
<?php
$dossier = 'upload/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 2000000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
?>
Et j'en ai trouvé un autre sur un site que j'essai aussi dis moi lequel tu pense que ce soit le mieux:
<?php
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['photo']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
echo "1";
}
// on vérifie maintenant l'extension
$type_file = $_FILES['photo']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
echo "2";
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['photo']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
echo "3";
}
echo "Le fichier a bien été uploadé";
}
?>
J'attends ac impatience vos réponses! -
ContributeurEst-ce que tu pourrais me copier tout le script, avec la page du formulaire ?
- 1
- 2
Suivant