Upload d'une image

Résolu
takolin Messages postés 9 Statut Membre -  
takolin Messages postés 9 Statut Membre -
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
Configuration: Windows Vista Internet Explorer 7.0

7 réponses

  1. le_boss Messages postés 172 Statut Membre 19
     
    Bonjour

    On peut voir le code ? paske sans ça c'est difficile de voir où est l'erreur.
    0
  2. takolin Messages postés 9 Statut Membre
     
    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
  3. le_boss Messages postés 172 Statut Membre 19
     
    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
  4. takolin Messages postés 9 Statut Membre
     
    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
    1. le_boss Messages postés 172 Statut Membre 19
       
      à 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. takolin Messages postés 9 Statut Membre
     
    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
  7. le_boss Messages postés 172 Statut Membre 19
     
    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
  8. takolin Messages postés 9 Statut Membre
     
    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