2017-09-03 1 views
0

Je veux forcer le téléchargement d'un fichier pdf stocké sur le serveur.Comment forcer le téléchargement d'un fichier pdf stocké sur le serveur?

Mes tentatives à ce jour aboutissent à un fichier pdf endommagé.

<div class="w3-row"> 
    <div class="w3-col l8 s12"> 
    <div class="w3-card-4 w3-margin w3-white "> 
     <div class="w3-display-container"> 
     <center> 
      <header class="w3-teal w3-center"> 
      <h2><b> You can download you syllabus here </b></h2> 
      </header> 
      <br> 
      <h2 class="w3-container " style="color: darkblue;"><strong><?php echo $branch ?></strong></h2> 
      <h3 class="w3-container"><strong><?php echo $sem ?></strong></h3> 

      <br> 
      <a class="w3-text-red w3-large" href="script/download.php?filedir='<?php echo " 
      script/ ".$dir ?>&filename= <?php echo $name ?> ' "><strong>Download</strong></a> 
      <br> 
      <br> 
     </center> 
     </div> 
    </div> 
    <hr> 
    </div> 

ci-dessous est le download.php

 $path = $_GET['filedir'] ; 
     $filename = $_GET['filename']; 


     header('Connection: Keep-Alive'); 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     //header('Content-Disposition: attachment; 
     filename="'.basename($filename).'"'); 
     header('Content-Transfer-Encoding: binary'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($filename)); 
     ob_clean(); 
     flush(); 
     readfile($path); 
+1

Pouvez-vous montrer le code correspondant dans 'download.php'? –

+0

Si vous allez nous montrer le code du fichier download.php alors nous pouvons vous aider –

+0

bien sûr, je viens de le poster –

Répondre

0

Vous avez problème ici quand vous obtenez le nom de fichier en utilisant basename

$path = $_GET['filedir'] ; 
$filename = $_GET['filename']; 

header('Connection: Keep-Alive'); 
header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
//header('Content-Disposition: attachment; 
$filename=basename($filename); //change this line; 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($filename)); 
ob_clean(); 
flush(); 
readfile($path); 
+0

Mais monsieur, il est en train de télécharger le fichier download.php. Pourquoi? –