IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP => move_uploaded_file


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Par défaut PHP => move_uploaded_file
    Bonjour tout le monde,

    Je viens poster ici ce soir car je butte sur la fonction php "move_uploaded_file ".

    - En effet, je n'ai aucun message d'erreur mais l'upload ne se fait pas....

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
     
    $file = $_FILES['image1'];
     
    $uploaddir = '/setup/';
    $uploadfile = $uploaddir . basename($_FILES['image1']['name']);
     
     
    echo '<pre>';
    if (move_uploaded_file . basename($_FILES['image1']["name"], $uploadfile)) {
      echo "Fonctionne ok .
       Voici plus d'informations :\n";
    } else {
      echo "Ne fonctionne pas.
          Voici plus d'informations :\n";
    }
     
    print_r($_FILES);
     
    echo '</pre>';
    echo "le nom du fichier selectionné est : ".basename($_FILES['image1']["name"]);?>
    </br>
    <?php
    echo " le nouveau chemin de destination est : ".$uploadfile;
    ?>
    Je ne vous ai pas mis le formulaire html...

    - Mes écho fonctionnent bien,
    - La page PHP m'affiche "Fonctionne ok"
    - Je n'ai pour le moment pas fait de contrôle sur le type de fichier ni sur la taille etc... je voudrais déjà faire fonctionner cela simplement et petit a petit corser les choses

    Je precise que mon serveur PHP est sur un Synology et que l'utilisateur http a bien les droits en écriture.
    J'ai aussi fait un chmod 777 sur le dossier /setup ...

    Je ne demande pas une solution toute faite mais plutôt quelques conseils sur cette fonction...

    Merci a vous

  2. #2
    Invité
    Invité(e)
    Par défaut


    • Tu fais une concaténation au lieu d'une fonction !
    • Tu confonds "name" et "tmp_name"
    • enlève basename()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( move_uploaded_file( ... ) ) {
    Dernière modification par Invité ; 30/08/2019 à 10h55.

  3. #3
    Membre averti
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Par défaut
    Bonjour et merci pour ta réponse.

    J'ai testé avec ta ligne de code mais je passe dans le else..

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    tu ne testes pas l'existence du fichier (comme indiqué ici : https://antoine-herault.developpez.c...ls/php/upload/). Or j'ai quelques doutes sur ta ligne 6 $uploaddir = '/setup/';. Y a pas un slash en trop ? $uploaddir = 'setup/';Sinon, garde bien la remarque de jreaux62 au post #2...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut surtout :


    * Code d'upload de base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    if(isset($_FILES['avatar']))
    { 
         $dossier = 'upload/';
         $fichier = basename($_FILES['avatar']['name']);
         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 !';
         }
    }

  6. #6
    Membre averti
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Par défaut
    Bonjour tout le monde,

    Merci pour vos réponses ;-)

    Je vais essayer de vous répondre sans m'emmener les pinceaux ^^

    - laurentSc => j'ai mis /setup/ car le dossier setup est a la racine de mon dossier web et mon script php ne l'est pas.. c'est pour éviter d'écrire ../../../setup/

    Non je ne teste pas l'existence du fichier..je voudrais déjà comprendre et faire fonctionner le "noyau" pour ensuite l'étoffer avec toutes les options.. test existence, type, taille etc..

    - jreaux62 => j'ai remarqué pour la concaténation..c'est vrai qu'a force de tout tester ...

    Je confond peux être name et tmp_name enfin je ne pense pas avoir compris tmp_name car pour moi

    name = c'est le nom du fichier uploadé
    tmp_name = c'est le chemin d'accès a ce fichier dans le dossier temporaire du serveur php ce qui revient au meme que basename nan?

    Si tel est le cas, je ne comprend pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
    on va faire le move sur le fichier associé a la requête "POST" qui a pour nom avatar et qui se trouve temporairement dans "tmp_name" ?

    Donc on ne se sert pas du nom du fichier "$_FILES['avatar']['name']" mise a par pour le renommer a l'identique dans le dossier de destination?

    Merci pour le temps que vous me consacrez

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP] move_uploaded_file() le fichier n'est pas transmis
    Par Alex101283 dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2019, 16h14
  2. PHP Warning: move_uploaded_file()
    Par solo190 dans le forum Apache
    Réponses: 1
    Dernier message: 01/11/2017, 10h13
  3. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 08h45
  4. PHP Warning: move_uploaded_file
    Par Benamour Jr dans le forum Langage
    Réponses: 3
    Dernier message: 27/03/2010, 22h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo