Partage
  • Partager sur Facebook
  • Partager sur Twitter

la fonction move_uploaded_file()

comprendre le tutorial sur le sujet!

Sujet résolu
    23 octobre 2006 à 19:44:58

    Bonjour, je suis tout débutant en PHP!
    Voilà mon problème, je vais tâcher de l'exposer clairement, peu importe si je passe pour un imbécile:

    Je reviens du tutorial:

    http://www.siteduzero.com/tuto-3-1718-1-upload-de-fichiers-par-formulaire.html

    Il s'agit de la fonction qui permet de déplacer un fichier uploadé avec un formulaire:
    Le formulaire renvoie une variable de type $_FILE['nom donné dans le formulaire'] et celle qui va nous intéresser ici est $_FILES['nom donné dans le formulaire']['tmp_name']
    Moi j'ai nommé la mienne :$_FILES['image']['tmp_name']
    ['tmp_name'] contient l'adresse où a été stocké le fichier ( en l'occurence une image ) mais il s'agit d'un fichier temporaire duquel doit être renvoyé le fichier à destination d'un autre dossier.
    La fonction suivante fait ce travail:
    move_uploaded_file(adresse de départ, adresse de destination)
    A première vue ça a l'air simple. Bien sûr je m'adresse surtout à ceux qui connaissent bien cette fonction parceque vous allez voir, elle est pas drôle du tout.
    En ce qui me concerne, mes opération ne se passent pas sur FTP mais sur mon ordinateur hors connexion avec MON EASY PHP à moi.

    Le tutorial que j'ai indiqué nous donne un code dont je me suis servi pour transférer mon fichier:
    $nom = microtime();
    $nom = "nouveau_site_vinciane/mes_images/".str_replace(' ','',$nom);
    $resultat = move_uploaded_file($_FILES['image']['tmp_name'],"nouveau_site_vinciane");
    if ($resultat) echo "Transfert réussi";
    ?>

    je précise que microtime() donne une date exacte qui sera exploitée pour écrire un nouveau nom.
    Et vous ne savez pas la suite? Et bien ça marche! Ca marche même très bien!
    J'obtiens ce message: "Transfert réussi"
    " Alors qu'est-ce que tu nous chantes, ? " vous vous dites?
    Et bien rien, à part que je ne sais pas ce que j'ai transféré, ni comment, ni où. JE N'AI RIEN COMPRIS en gros !
    Grâce à
    echo $_FILES['image']['tmp_name']

    Je lis : C:/Program Files/EasyPHP1-8\tmp\phpB6.tmp
    Ouais! C'est complètement vide là dedans! Sans doute parcequ'il s'agit du fichier temporaire! Très temporaire alors!
    Avec
    echo $nom ?><br /> <?php ;

    l'adresse de destination que j'ai fabriqué miraculeusement et qui semble fonctionner, je peux lire :
    nouveau_site_vinciane/mes_images/0.106304001161624192
    Ca n'existe même pas! Ce n'est même pas vide, c'est une aberration!
    Très réussi ce transfert en effet
    Voici mes questions:
    Hors FTP ( donc en bricolant depuis son PC ), à quoi doit ressembler une adresse de destination?
    Comment je récupère mes fichiers très concrètement?
    Dois-je retourner à l'école maternelle?

    P.S: Si vous allez sur le tutorial, vous allez remarquer l'avatar, on dirait Matéo21 mais en fait c'est son père et il a l'air méchant celui là!
    En tous cas je vous remercie ENORMEMENT de votre aide, ne me tapez pas si vous pensez que je suis sous-doué même si c'est vrai. J'ai préparé 208 kg de TNT sous mon siège pour mettre fin à mes jours!
    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2006 à 19:56:40

      Si t'es sur windows précise le répertoire courant, car ça pose problème.

      Elle doit-être transférée où cette image ?



      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2006 à 21:13:18

        Merci à toi Strucky,
        Si je travaille exclusivement sur mon PC, tous les dossiers du site sont contenus dans :
        C:\Documents and Settings\HP_Administrateur\Mes documents\TEST PHP\nouveau_site_vinciane
        ( Je ne suis pas sûr cependant d'avoir bien répondu à la question et à vrai dire je ne suis pas sûr de savoir ce que c'est qu'un "répertoire courant", oui je sais que je suis nul )
        En tout cas je veux mettre mon image ( puisqu'il ne s'agit que d'un essai ) à l'intérieur du dossier: \nouveau_site_vinciane.
        C'est le fichier: vinciane_administration_liste.php , qui se trouve aussi dans ce dossier et qui contient le code uploadfile et sur mon PC comme sur FTP je vais faire en sorte qu'il partage le même dossier que l'image

        MERCI ENCORE
        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2006 à 21:20:30

          Le répertoire courant est le répertoire où le script s'exécute, il se désigne avec ./

          Donc ça ferait :

          $resultat = move_uploaded_file($_FILES['image']['tmp_name'], './nouveau_site_vinciane');


          Mais elle sert à quoi la variable $nom ?
          • Partager sur Facebook
          • Partager sur Twitter
            23 octobre 2006 à 23:19:58

            C'est vrai que c'est pas terrible cette variable $nom. En fait, elle attribue une date au moment ou elle s'execute!

            J'ai oublié de le préciser. En fait, si je l'applique, comme préconisé par l'auteur, mon transfert foire complètement. Mais je l'ai gardé dans le code seulement je ne l'utilise pas ici, je mets directement:
            $resultat = move_uploaded_file($_FILES['image']['tmp_name'],"nouveau_site_vinciane");

            Je vais essayer ton code mais en fait j'ignore complètement où vont les fichiers parceque moi, après un transfert soi-disant "réussi", je n'ai rien de visible et rien d'exploitable.

            ... Voilà, j'ai essayé, le transfert est "réussi" mais il ne se produit rien, je ne trouve aucun fichier image. Je ne sais pas sous quelle forme je dois exploité mon fichier transféré ni comment le trouvé.
            Matéo21 à un sens pointu de la pédagogie puisque l'on comprend tout mais ce tutorial là semble s'adresser à des personnes déjà expérimentées. Faut s'accrocher.
            • Partager sur Facebook
            • Partager sur Twitter
              24 octobre 2006 à 0:51:09

              Citation : FUTASELA



              $nom = microtime();
              $nom = "nouveau_site_vinciane/mes_images/".str_replace(' ','',$nom);
              $resultat = move_uploaded_file($_FILES['image']['tmp_name'],"nouveau_site_vinciane");
              if ($resultat) echo "Transfert réussi";
              ?>




              A remplacer par

              $nom = microtime();
              $nom = "nouveau_site_vinciane/mes_images/".str_replace(' ','',$nom);
              $resultat = move_uploaded_file($_FILES['image']['tmp_name'],$nom);
              if ($resultat) echo "Transfert réussi";
              ?>


              Cela permet de donner un nom unique à tes fichiers, afin d'éviter que deux fichiers aient le même nom.

              Fait un echo de $nom de la deuxième ligne pour voir ce qu'il affiche, ainsi que pour $resultat. Ca t'aidera à savoir ce qui se passe.

              • Partager sur Facebook
              • Partager sur Twitter
                24 octobre 2006 à 2:27:06

                Merci de vos interventions! Vous m'aidez bien tous les deux! C'est juste, je dois en effet taper ce code pour changer le nom ! J'avais déjà essayé ce code mais en vain! Maintenant c'est autre chose!
                Maintenant ça marche, il se trouve qu'entre temps j'ai tout découvert d'un coup; Mes fichiers se cachaient dans Apache ( encore un coup des Indiens )et j'ai été berné parceque mes fichiers transférés en tant que "nouveau_site_vinciane" avait le nom d'un de mes fichiers utilitaires, je ne me doutais donc pas les trouver à cet emplacement. Enfin je place mes fichiers transférés dans un sous-dossier c'est encore mieux!

                J'ai pu ensuite rétablir l'extension jpeg. Je me frotte les mains, je pense que ces fonctions sont très importantes dans la création d'un site web!
                Tout est parfait, il m'a fallut une journée à m'arracher les cheveux, une journée infernale et je vais faire un joli feu d'artifice de joie pour clore cette aventure qui se termine bien.
                Au fait super sympa le site des mobilehomes et les intérieurs, confortables! J'ai bien aimé!!! :lol:
                • Partager sur Facebook
                • Partager sur Twitter
                  24 octobre 2006 à 11:25:00

                  Citation : FUTASELA

                  je vais faire un joli feu d'artifice de joie pour clore cette aventure qui se termine bien.



                  Prends des photos. :p

                  Citation : FUTASELA

                  Au fait super sympa le site des mobilehomes et les intérieurs, confortables! J'ai bien aimé!!! :lol:



                  Merci :D
                  • Partager sur Facebook
                  • Partager sur Twitter

                  la fonction move_uploaded_file()

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown