telechargement de fichier (ERREUR double En-têtes )

telechargement de fichier (ERREUR double En-têtes ) - PHP - Programmation

Marsh Posté le 26-03-2015 à 23:01:12    

Bonsoir , j'ai un projet à faire et je doit télécharger des images  
(upload & download) c'est un code simple sans les tests de vérifications  
Le problème c'est que j'arrive pas à télécharger les image ça me fait une erreur genre :  
En-têtes doubles envoyés par le serveur  
Ce problème est généralement dû à un site Web ou un proxy mal configuré. Seul l'administrateur du site Web ou du proxy peut remédier à ce problème.  
Code d'erreur : ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH.  
voici le code :  
page : image_telecharger.php  

Code :
  1. <?php
  2. try
  3. {
  4. $bdd = new PDO('mysql:host=localhost;dbname=facile', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  5. }catch(Exception $e)
  6. {
  7. die('Erreur : '.$e->getMessage());
  8. }
  9. $sql = $bdd->prepare('SELECT image FROM images WHERE id_image = ?');
  10. $sql->execute (array($_GET['id_image']));
  11. $data = $sql->fetch();
  12. header('Content-description : File transfer');
  13. header('Content-type : application/octet-stream');
  14. header('Content-Disposition : attachment; filename="image.jpg" ');
  15. header('Content-length : '.filesize ('upa/'.$data['image']) );
  16. ob_clean();
  17. readfile('upa/'.$data['image']);
  18. ?>


code page : image_publier.php

Code :
  1. <?php
  2. session_start();
  3. // on vérifie toujours qu'il s'agit d'un membre qui est connecté
  4. if (!isset($_SESSION['pseudo'])) {
  5. // si ce n'est pas le cas, on le redirige vers l'accueil
  6. header ('Location: p_connexion.php');
  7. exit();
  8. }
  9. // on teste si le formulaire a bien été soumis
  10. try
  11. {
  12. $bdd = new PDO('mysql:host=localhost;dbname=facile', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  13. }catch(Exception $e)
  14. {
  15. die('Erreur : '.$e->getMessage());
  16. }
  17. if (isset($_POST['upload']) && $_POST['upload'] == 'Upload') {
  18.     if(! is_dir('upa') ) { mkdir('upa'); } //si le dossier n'existe pas on le créé avc mkdir
  19.    
  20. $date = date("Y-m-d H:i:s" );
  21. @$file = $_FILES['image']['name'];
  22. @$lien='http://localhost/facile/publier/upa/'.$_FILES["image"]["name"];
  23. @$tmp = $_FILES['image']['tmp_name'];
  24. if(!empty($file)) {
  25.    
  26. move_uploaded_file($tmp,'upa/'.$file);
  27.     $sql = $bdd->prepare('INSERT INTO images (id_auteur,date_image,image) VALUES (?,?,?)');
  28.     $sql->execute(array($_SESSION['user_id'],$date,$lien));
  29.     $sql->CloseCursor();
  30.        
  31.    
  32. }
  33.    
  34. }
  35.        
  36.        
  37.         ?>
  38. <!DOCTYPE html>
  39. <html>
  40.     <head>
  41.         <title>Download</title>
  42.         <meta charset="utf-8"/>
  43.        
  44.     </head>
  45.     <body>
  46.         <section>
  47.         <form method="post" action="image_publier.php" enctype="multipart/form-data">
  48.          <p><input type="file" name="image" />
  49.             <input type="submit" name="upload" value="Upload" /></p>
  50.         </form>
  51.   </section>
  52.         <?PHP
  53.         // on prépare une requete SQL cherchant tous les titres, les dates ainsi que l'auteur des status pour le membre connecté
  54. $req = $bdd->prepare ('SELECT image,date_image, user.pseudo as moi ,id_image FROM images INNER JOIN user ON images.id_auteur = user.user_id WHERE id_auteur = ? ORDER BY date_image DESC');
  55. $req->execute(array($_SESSION['user_id']));
  56. $num_rows = $req->rowCount();
  57. if ($num_rows == 0) {
  58. echo "il n'existe aucune image";
  59. }
  60. else {
  61. // si on a des status, on affiche la date, un lien vers la page lire.php ainsi que le titre et l'auteur du message
  62.     ?>
  63.    
  64.     <section style="height:auto;">
  65.     <div id="tablo">
  66.     <?php
  67.       echo"vous avez ".$num_rows." images <br/><br/>";
  68. while ($data = $req->fetch()) {
  69.          $id= $data['id_image'];
  70.        
  71.        ?>
  72.    
  73.             <table>
  74.     <tr> <td class="c"> <span class="pseudo"><?php echo stripslashes(htmlentities(trim($data['moi']))); ?></span>
  75.        
  76.  
  77.                
  78.         <tr> <td class="c" style="height: 50px;">
  79.      
  80.           <p><!--<img src="img.png" style=" width:55px; hight:45px;"/>-->
  81.            <span class="msg"> <?php echo  "<img src='".$data['image']."' width='260' height='270' />"; ?> 
  82.            <?php echo"<a href='image_telecharger.php?id_image=$id' style='margin-left:20px'>Télécharger</a><br/>" ?>
  83.            
  84.              
  85.            </p></span></td></tr>
  86.                
  87.         <tr><td class="c"><span class="date"><?php echo $data['date_image']; ?></span></td> </tr>
  88.                
  89.             </table>
  90.      
  91. <?php
  92. }
  93. }
  94.      
  95.    
  96. $req->closeCursor();
  97. ?>
  98. </div>
  99. </section>
  100.     </body>
  101. </html>


Merci pour votre aide c'est vraiment très important

Reply

Marsh Posté le 26-03-2015 à 23:01:12   

Reply

Marsh Posté le 28-03-2015 à 03:32:45    

Pourquoi utiliser application/octet-stream alors que tu définies  que c'est un jpg en dessous ? Autant mettre image/jpeg non ?
Edit : Ok en faisant ça, ça risque d'afficher l'image et ne force pas le téléchargement.
 
Pas sur aussi que le double quote autour de image.jpg soit utile à la ligne 20 de image_telecharger.php
Edit: utile pour les noms de fichiers avec espace.
 
As tu tester si $data['image'] te donne une valeur cohérente ?
ob_clean() sans ob_start() ?


Message édité par FBZ le 28-03-2015 à 04:03:40

---------------
[Feed-back]
Reply

Marsh Posté le 28-03-2015 à 16:19:09    

c'est bon j'ai rectifié l'erreur merci pour votre réponse :)  
par contre  j'ai une autre question si cela ne vous dérange pas bien sure
j'ai 2 tables sql une table_user et table_publication(contient les statuts ,images,fichiers que l'utilisateur publie )
et je veux afficher toutes les publication des membres  
le problème c'est que ça m'affiche même les champs NULL  
(ex: un user n'a pas publier d'image mais s'affiche un espace vide quand même )  
A tu une idée sur la source du problème ?

Reply

Marsh Posté le 28-03-2015 à 17:03:15    

dans ta boucle pour afficher tes valeurs tu mets un truc du genre :
 

Code :
  1. if ($valeur != null) echo ....


ou
 

Code :
  1. if ($valeur) echo...


---------------
[Feed-back]
Reply

Marsh Posté le 28-03-2015 à 18:42:45    

merci beaucoup au fait ça marche que sur l'affichage des images
 
donc je vais voir comment corriger cela pour les statuts et fichiers
 
bonne journée :)  

Reply

Marsh Posté le 28-03-2015 à 18:49:47    

Code :
  1. if (!empty($valeur)) echo...


---------------
[Feed-back]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed