graymilebulgare Posté 3 Mai 2011 Posté 3 Mai 2011 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 <?phpif (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(); }?>
captain_torche Posté 3 Mai 2011 Posté 3 Mai 2011 Es-tu certain que ta variable $taille contienne une information correcte ?
MarvinLeRouge Posté 3 Mai 2011 Posté 3 Mai 2011 Salut, Vérifie plutôt avec filesize, et vois si ça marche mieux.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant