Upload d'une image

Résolu/Fermé
takolin Messages postés 8 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 13 avril 2011 - 11 mai 2009 à 19:03
takolin Messages postés 8 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 13 avril 2011 - 12 mai 2009 à 14:06
Bonjour,

J'aimerias beaucoup pouvoir un jour uploader une image sur mon site, mais... Quand j'ai enfin pu mettre un formulaire qui me semble fontionner (ou plutôt un formulaire que j'ai enfin pu comprendre...) Il me vient ce message:
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access upload/renard.jpg in /home/httpd/vhosts/takolin.ch/httpdocs/veledes/upload/upload.php on line 24
Je ne sais pas quoi faire...
Merci ce votre aide
A voir également:

7 réponses

le_boss Messages postés 168 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 29 octobre 2011 19
11 mai 2009 à 19:15
Bonjour

On peut voir le code ? paske sans ça c'est difficile de voir où est l'erreur.
0
takolin Messages postés 8 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 13 avril 2011
11 mai 2009 à 19:51
Oupss...

Voilà la page du formulaire:

<form method="POST" action="upload.php" enctype="multipart/form-data">
<!-- On limite le fichier à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
Fichier : <input type="file" name="avatar">
<input type="submit" name="envoyer" value="Envoyer le fichier">
</form>

Et le fichier PHP:

<?php
$dossier = 'upload/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['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
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(copy($_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;
}
?>

Le tout est placé dans mon site à l'adresse: www.takolin.ch/veledes/upload/
0
le_boss Messages postés 168 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 29 octobre 2011 19
11 mai 2009 à 21:15
euh dans l'erreur de ton 1er post on voit que tu utilises la fonction "move_uploaded_file()" et dans ton code elle y est pas sauf erreur. Donc y doit manquer quelque chose.

A part ça, vérifies que les chemins soient justes. Genre, "upload/renard.jpg" si ton script est déjà situé dans le dossier upload, il faut mentionner seulement "renard.jpg"... enfin, je suis surement pas clair, là, mais je vois pas comment le dire autrement.
0
takolin Messages postés 8 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 13 avril 2011
11 mai 2009 à 21:36
Je coirs que j'ai du faire une changement et que je ne suis pas revenu juste.

Voilà le message d'erreur actuel:
Warning: move_uploaded_file(renard.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/httpd/vhosts/takolin.ch/httpdocs/veledes/upload/upload.php on line 24

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpVhA5aD' to 'renard.jpg' in /home/httpd/vhosts/takolin.ch/httpdocs/veledes/upload/upload.php on line 24

et voilà mon fichier PHP:
<?php
$dossier = '';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['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
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
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;
}
?>

Pour mon dossier j'ai laissé vide:
$dossier = '';
C'est just?!?

Merci de ton aide le_boss :)
0
le_boss Messages postés 168 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 29 octobre 2011 19
11 mai 2009 à 22:11
à voir comme ça, oui

maintenant quand je vois "permission denied" et "unable to move" je pencherais presque pour le fait que les répertoires en question n'ont pas le bon chmod.

t'es sur un serveur perso ou chez un hébergeur ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
takolin Messages postés 8 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 13 avril 2011
11 mai 2009 à 22:16
Je suis chez un hébergeur, pour le dossier que je veux comme dossier finale pour mes images (c'est à dire upload) je peux mettre le chmod que je veux, actuellement c'est en 775.
0
le_boss Messages postés 168 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 29 octobre 2011 19
11 mai 2009 à 22:28
alors là, j'ai de la peine à voir d'où vient le problème...

ce que je te conseille, c'est de faire des essais en partant d'un truc basique, puis revenir progressivement à ton truc définitif en réessayant chaque fois... comme ça par élimination tu pourras voir ce qui embête
0
takolin Messages postés 8 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 13 avril 2011
12 mai 2009 à 14:06
Merci, j'ai fais cela, sa a rien donné puis j'ai compris que je devais aussi mettre le fichier php en chmod 775, puis tout roule comme sur des roulettes...

Merci bien de ton aide!
0