Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: graymi le le 03-05-2011 a 11:02:42

Titre: Erreur de la taille lors de telechargement de fichiers
Posté par: graymi le le 03-05-2011 a 11:02:42

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


Code:

<?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();
}

?>

Titre: Re:Erreur de la taille lors de telechargement de fichiers
Posté par: Martin. le le 05-05-2011 a 07:35:45

Bonjour,

Êtes-vous sû que le champ "taille" dans votre base de données indique la bonne taille? Comment cette taille est-elle calculée?

Bonne journée !

Titre: Re:Erreur de la taille lors de telechargement de fichiers
Posté par: MarvinLeRouge le le 06-05-2011 a 10:18:57

filesize est ton ami


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.