Page 1 sur 1

Erreur de telechargement de fichier

Posté : 02 mai 2011, 19:31
par Jeremielebulgare
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 : Tout sélectionner

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

Re: Erreur de telechargement de fichier

Posté : 02 mai 2011, 23:34
par Genova
Tu as probablement une erreur PHP, met en commentaire les header() et affiche ta page pour débug.

Re: Erreur de telechargement de fichier

Posté : 03 mai 2011, 00:16
par moogli
salut,

j’ajoute qu'après test ton code fonctionne, peux tu fournir le code d'insertion dans la table ? (et le create table de la table telechargement).


@+

Re: Erreur de telechargement de fichier

Posté : 03 mai 2011, 09:36
par Jeremielebulgare
Effectivement j'ai tester le code sans les headers, il n'y a aucune erreur, voila ma table telechargement:

Code : Tout sélectionner

-- Base de données: `test` -- -- -------------------------------------------------------- -- -- Structure de la table `telechargement` -- CREATE TABLE IF NOT EXISTS `telechargement` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nom_fichier` varchar(255) NOT NULL, `nom` varchar(255) NOT NULL, `titre` varchar(255) NOT NULL, `taille` int(11) NOT NULL, `extension` varchar(255) NOT NULL, `date_fichier` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ; -- -- Contenu de la table `telechargement` -- INSERT INTO `telechargement` (`id`, `nom_fichier`, `nom`, `titre`, `taille`, `extension`, `date_fichier`) VALUES (5, 'Rezultati ot izpit na 14.12.2010.pdf', '0c5fbf83fcd72799983ab7156a9d8ef2', 'cinquieme', 47892, 'pdf', '2011-05-02 13:11:51'), (6, '10050Borislav.gif', '3a2f1bb30861ef88d9783a20302871ef', 'photo', 33390, 'gif', '2011-05-02 16:43:18'), (7, 'new_releases_bg.gif', '26173e070ef127bb32c197b3802a175d', 'Titre...yuef', 154, 'gif', '2011-05-02 19:15:03');

Re: Erreur de telechargement de fichier

Posté : 03 mai 2011, 11:45
par macgawel
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.
Bonjour.

- Tu as pensé à ouvrir ton fichier avec un éditeur de texte ?
- Tu as vérifié que le fichier est bien dans le répertoire uploads/ ?

Re: Erreur de telechargement de fichier

Posté : 03 mai 2011, 13:07
par moogli
va falloir que tu affiche les valeurs retourné par la requête, utilise file_exist pour savoir si le fichier que cherche a envoyer existe physiquement sur le disque.

le code en lui est "correct" peut être a tu un problème dans le nom du fichier (chemin compris) ?

pour vérifier les infos fournit un var_dump($donnees) dans le while (qui d’ailleurs est inutile puisque tu ne doit avoir qu'un seul fichier par id ;) ).


@+

Re: Erreur de telechargement de fichier

Posté : 04 mai 2011, 10:19
par @rthur
Modération :
Jeremielebulgare, le multipostage est interdit sur le forum.

Merci de prendre le temps de lire les règles du forum.