Partage
  • Partager sur Facebook
  • Partager sur Twitter

Télécharger un fichier avec l'URL en PHP

Cliquer sur un lien une page vide s'ouvre et le téléchargement démare

Sujet résolu
    27 janvier 2014 à 9:37:51

    Bonjour à tous,

    J'ai crée un module pour envoyer des fichiers au serveur et de les télécharger.

    1. Pour la première étape "envoyer des fichiers au serveur" : j'ai crée ce module avec une formulaire avec un bouton parcourir qui parmi du transférer les fichier de notre ordinateur vers le serveur.

    2. La deuxième étape est le contraire télécharger les fichiers depuis le serveur vers notre ordinateur, ça ce que j'ai pas arrivé de le faire, j'ai une idée est de les télécharger à partir d'une url dés que je clique sur ce lien une page vide blanche s'ouvre et le téléchargement démarre !

    Sinon si vous avez d'autre idée dis moi,

    Aidez moi SVP

    Merci d'avance :)


    -
    Edité par Mina Info... 27 janvier 2014 à 9:42:19

    • Partager sur Facebook
    • Partager sur Twitter
      27 janvier 2014 à 10:12:12

      Normalement le téléchargement est automatique dans le navigateur pour certains types de fichiers. Pour d'autres, il faudra que tu spécifies dans le header de ta page que c'est une page de téléchargement.

      Tout t'est expliqué ici: http://www.richnetapps.com/the-right-way-to-handle-file-downloads-in-php/

      • Partager sur Facebook
      • Partager sur Twitter
      Entraidons-nous sur un site inachevé, c'est tellement mieux ! | JSDZ@Toulouse
        27 janvier 2014 à 10:25:58

        G-rem a écrit:

        Normalement le téléchargement est automatique dans le navigateur pour certains types de fichiers. Pour d'autres, il faudra que tu spécifies dans le header de ta page que c'est une page de téléchargement.

        Tout t'est expliqué ici: http://www.richnetapps.com/the-right-way-to-handle-file-downloads-in-php/


        Merci G-rem 

        j'ai réussi pour le type du fichier .dox, mais pour .pdf le téléchargement démarre après il m'affiche fichier introuvable, et ne démarre même pas pour les images !! 

        • Partager sur Facebook
        • Partager sur Twitter
          27 janvier 2014 à 10:40:14

          Salut, il nous faudrait plus d'informations à partir de maintenant comme un bout de code de la page de téléchargement...
          • Partager sur Facebook
          • Partager sur Twitter
          En apprentissage continue....
            27 janvier 2014 à 10:45:25

            azeupaul a écrit:

            Salut, il nous faudrait plus d'informations à partir de maintenant comme un bout de code de la page de téléchargement...


            Ok je vais essayer encoure, et je vais voire
            • Partager sur Facebook
            • Partager sur Twitter
              27 janvier 2014 à 15:55:36

              Bon voilà j'ai arrivé à ce code là :

              if (empty($_GET["file"])) {
                  exit;
              }
              $mypath = 'php/files/' .  $_GET['file'];
              $path_parts = pathinfo($_GET['file']);
              $file_name  = $path_parts['basename'];
              $file_path  = 'php/files' . $file_name;
              header("Content-Type: application/force-download");
              header("Content-Type: application/octet-stream");
              header("Content-Type: application/download");
              header("Content-Disposition: attachment; filename=\"$file_name\"");
              header("Pragma: public");
              header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
              set_time_limit(0);
              $file = @fopen($file_path,"rb");
              while(!feof($file))
              {
              	print(@fread($file, 1024*8));
              	ob_flush();
              	flush();
              }
              header("Accept-Ranges: bytes");
              if (isset($_SERVER['HTTP_RANGE'])) 
              	$range = $_SERVER['HTTP_RANGE'];
              
              header('HTTP/1.1 416 Requested Range Not Satisfiable');
              header('HTTP/1.1 206 Partial Content');
              header('Accept-Ranges: bytes');
              header("Content-Range: bytes $start-$end/$filesize");
              $content_length = $end - $start + 1;
              header("Content-Length: $length");
              // envoi le contenu du fichier
              readfile($file_name);


              Et ce code s'exécute une fois je clique sur un lien ou je lui donne le nom du fichier :

              http://..../server/php/download.php?file=Badi_Construction.docx 

              Le téléchargement démarre mais elle se terminera jamais elle rèste tjrs en cours de téléchargement et à chaque fois le nombre d'octet change

              Aidez moi SVP :euh: 

              Merci d'avance :)

              • Partager sur Facebook
              • Partager sur Twitter
                27 janvier 2014 à 15:59:18

                Est-tu sûre que le chemin vers le fichier à télécharger existe ? Que le nom et l'extension passé dans l'url est exactement identique au fichier (surtout si tu est sous un hébergement Linux) ?

                • Partager sur Facebook
                • Partager sur Twitter
                Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                  28 janvier 2014 à 9:35:28

                  elyppire933 a écrit:

                  Est-tu sûre que le chemin vers le fichier à télécharger existe ? Que le nom et l'extension passé dans l'url est exactement identique au fichier (surtout si tu est sous un hébergement Linux) ?Salut,

                  Salut,

                  oui je suis sûre  que le chemin existe , et le nom et l'extension passé dans l'url est exactement identique au mon  fichier ,

                  Je travail sur windows, le téléchargement démarre mais il se terminera jamais, il ma'affiche le nom de fichier à télécharger et le nombre d'octet télécharger 

                  Problèème :( 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 janvier 2014 à 9:38:07

                    Y'a moyen de tester la page en ligne (ou d'avoir un zip tout fait avec le formulaire + le module de téléchargement). Au passage c'est très dommageable de masquer les erreurs via le @. Je t'invite à lire la FAQ (lien dans ma signature) pour apprendre à gérer correctement les erreurs en PHP.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                      28 janvier 2014 à 9:52:13

                      elyppire933 a écrit:

                      Y'a moyen de tester la page en ligne (ou d'avoir un zip tout fait avec le formulaire + le module de téléchargement).
                      Au passage c'est très dommageable de masquer les erreurs via le @. Je t'invite à lire la FAQ (lien dans ma signature) pour apprendre à gérer correctement les erreurs en PHP.


                      Ok je vais envoyé le lien complet, mais comment je vous envoi le zip !

                      Merci d'avance :)

                      -
                      Edité par Mina Info... 28 janvier 2014 à 11:26:17

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 janvier 2014 à 10:04:51

                        Mina Info... a écrit:

                        elyppire933 a écrit:

                        Y'a moyen de tester la page en ligne (ou d'avoir un zip tout fait avec le formulaire + le module de téléchargement).
                        Au passage c'est très dommageable de masquer les erreurs via le @. Je t'invite à lire la FAQ (lien dans ma signature) pour apprendre à gérer correctement les erreurs en PHP.


                        Ok je vais envoyé le lien complet, mais comment je vous envoi le zip !

                        Merci d'avance :)



                        -
                        Edité par Mina Info... 28 janvier 2014 à 11:26:34

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 janvier 2014 à 10:14:03

                          Peux-tu essayer ce code en lieu et place du tien ? Merci :)

                          <?php
                          $file=$_GET['file']; 
                          
                          if (($file != "") && (file_exists("./" . basename($file)))) 
                          { 
                          $size = filesize("./" . basename($file)); 
                          header("Content-Type: application/force-download; name=\"" . basename($file) . "\""); 
                          header("Content-Transfer-Encoding: binary"); 
                          header("Content-Length: $size"); 
                          header("Content-Disposition: attachment; filename=\"" . basename($file) . "\""); 
                          header("Expires: 0"); 
                          header("Cache-Control: no-cache, must-revalidate"); 
                          header("Pragma: no-cache"); 
                          readfile("./" . basename($file)); 
                          exit(); 
                          } 
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                            28 janvier 2014 à 10:27:07

                            elyppire933 a écrit:

                            Peux-tu essayer ce code en lieu et place du tien ? Merci :)

                            <?php
                            $file=$_GET['file']; 
                            
                            if (($file != "") && (file_exists("./" . basename($file)))) 
                            { 
                            $size = filesize("./" . basename($file)); 
                            header("Content-Type: application/force-download; name=\"" . basename($file) . "\""); 
                            header("Content-Transfer-Encoding: binary"); 
                            header("Content-Length: $size"); 
                            header("Content-Disposition: attachment; filename=\"" . basename($file) . "\""); 
                            header("Expires: 0"); 
                            header("Cache-Control: no-cache, must-revalidate"); 
                            header("Pragma: no-cache"); 
                            readfile("./" . basename($file)); 
                            exit(); 
                            } 

                            Merci sur votre effort,

                            Il m'affiche une page vide sans démarrer le téléchargement !

                             

                            -
                            Edité par Mina Info... 28 janvier 2014 à 11:27:37

                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 janvier 2014 à 10:31:06

                              Tu as bien modifié les chemins vers le dossier des fichiers dans mon code ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                                28 janvier 2014 à 10:34:55

                                elyppire933 a écrit:

                                Tu as bien modifié les chemins vers le dossier des fichiers dans mon code ?


                                Comme ça puisque mon fichier il es tdans php/files/

                                <?php
                                $file=$_GET['file'];
                                 
                                if (($file != "") && (file_exists("php/files/" . basename($file))))
                                {
                                $size = filesize("php/files/" . basename($file));
                                header("Content-Type: application/force-download; name=\"" . basename($file) . "\"");
                                header("Content-Transfer-Encoding: binary");
                                header("Content-Length: $size");
                                header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
                                header("Expires: 0");
                                header("Cache-Control: no-cache, must-revalidate");
                                header("Pragma: no-cache");
                                readfile("php/files/" . basename($file));
                                exit();
                                }
                                ?>
                                



                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 janvier 2014 à 10:48:45

                                  Oui, cela semble correct.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                                    28 janvier 2014 à 10:53:27

                                    elyppire933 a écrit:

                                    Oui, cela semble correct.

                                    Mais malheureusement il marche pas, mon chemin elle est correcte !! :(

                                    -
                                    Edité par Mina Info... 28 janvier 2014 à 11:30:13

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      28 janvier 2014 à 11:08:54

                                      Ligne 3, fait un echo de $file et de basename( $file )

                                      Dans le if ligne 6 met un echo m'importe quoi.

                                      Si ce que tu passe dans l'url n'est pas vide et que le fichier existe, ca doit t'afficher ton echo n'importe quoi.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                                        28 janvier 2014 à 11:16:02

                                        elyppire933 a écrit:

                                        Ligne 3, fait un echo de $file et de basename( $file )

                                        Dans le if ligne 6 met un echo m'importe quoi.

                                        Si ce que tu passe dans l'url n'est pas vide et que le fichier existe, ca doit t'afficher ton echo n'importe quoi.

                                        Merci beaucouuuuup elyppire933 ça marche maintenant  vous avez raison le problème c'été dans le répertoire j'ai met des echo après le test du l’existence du fichier après j'ai constaté que le problème dans le chemin du fichier .

                                        Merci millllle fois :)

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 janvier 2014 à 12:08:57

                                          <troll>Je l'avais dit dès mon premier message ;)</troll>

                                          Enfin, content que ça marche. Pense aussi à désactiver le listing des répertoires sur ton serveur, c'est plus sécurisé.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP

                                          Télécharger un fichier avec l'URL en PHP

                                          × 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