Php - Erreur de telechargement forcer

Fermé
graymilebulgare Messages postés 1 Date d'inscription mardi 3 mai 2011 Statut Membre Dernière intervention 3 mai 2011 - 3 mai 2011 à 10:59
totofrancois Messages postés 398 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 2 août 2013 - 3 mai 2011 à 16:05
Bonjour,

J'ai voulu creer un petit blog ou on a la possibilite de poster des fichiers, qui seront ensuite telechargeable par les autre utilisateurs.

Mon soucis est que lors du telechargement du fichier, le fichier telecharger n'aura pas la bonne taille.

Par exemple j'ai fait le test avec un pdf qui fesait 48ko, et quand on le telecharge, il ne fait plus que 1.4ko.

Voici mon code pour telecharger un fichier


<?php
if (isset($_GET['id']))
   {
         
         try
            {
               $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
               $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
            }
         catch (Exception $e)
            {
               die('Erreur : ' . $e->getMessage());
            }
      $requete_fichier = $bdd->prepare('SELECT * FROM telechargement WHERE id = :id');
      $requete_fichier->execute(array(
                              'id' => $_GET['id']
                           )
                     );
      while ($donnees = $requete_fichier->fetch())
               {
                  $nom_fichier = $donnees['nom_fichier'];
                  $nom_crypte = $donnees['nom'];
                  $taille = $donnees['taille'];
                  $extension = $donnees['extension'];   
                  $nom_absolu = 'uploads/'.$nom_crypte.'';                  
                  $nom_fichier_crypte_avec_extension = $nom_absolu . $extension;
               }
         
      
               
      switch( $extension )
      {
           case "pdf": $ctype="application/pdf"; break;
           case "exe": $ctype="application/octet-stream"; break;
           case "zip": $ctype="application/zip"; break;
           case "doc": $ctype="application/msword"; break;
           case "xls": $ctype="application/vnd.ms-excel"; break;
           case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
           case "gif": $ctype="image/gif"; break;
           case "png": $ctype="image/png"; break;
           case "jpeg":
           case "jpg": $ctype="image/jpg"; break;
           case "mp3": $ctype="audio/mpeg"; break;
           case "wav": $ctype="audio/x-wav"; break;
           case "mpeg":
           case "mpg":
           case "mpe": $ctype="video/mpeg"; break;
           case "mov": $ctype="video/quicktime"; break;
           case "avi": $ctype="video/x-msvideo"; break;
        }
      
      //Création des headers, pour indiquer au navigateur qu'il s'agit d'un fichier à télécharger
         header("Content-Transfer-Encoding: binary"); //Transfert en binaire (fichier)
         header("Content-Length: $taille"); //Taille du fichier
         header("Content-type: $ctype");
         header("Content-Disposition: attachment; filename= $nom_fichier"); //Nom du fichier
         
   
      //Envoi du fichier dont le chemin est passé en paramètre
         readfile($nom_fichier_crypte_avec_extension);
   
   $requete_fichier->closeCursor();
   }
   
?>
A voir également:

1 réponse

totofrancois Messages postés 398 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 2 août 2013 44
3 mai 2011 à 16:05
montre ton code permettant l'envoi du fichier
0