Help: problem with Headers to download PDF file

Discussion in 'PHP' started by rfeio, Oct 14, 2009.

  1. #1
    Help: problem with HeaHi,

    I'm trying to implement a script where when a user clicks a link he gets a PDF file to open or save.

    In my index.php page I have the following link:

    <a href="http://localhost/example/get_file.php">Click here to get the file</a>
    Code (markup):
    And the script is in get_file.php:

    
    <?php
    $path = '/docs/document.pdf';
    $mm_type="application/pdf"; 
    
    
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Type: " . $mm_type);
    header("Content-Length: " . filesize($path) );
    header('Content-Disposition: attachment; filename="'.basename($path).'"');
    header("Content-Transfer-Encoding: binary");
    
    readfile($path); 
    
    exit();
    ?>
    
    Code (markup):
    Unfortunately it's not working properly. When clicking on the link and either selecting 'open' or 'save' from the dialog box, the end result is always the same; the end file is about 1KB in size when originally it was 456KB and therefore it's damaged.

    Any ideas on why this is happening?

    Thanks!
     
    rfeio, Oct 14, 2009 IP
  2. rfeio

    rfeio Peon

    Messages:
    12
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Ok, I've identified where the problem is.

    The path was incomplete. I had to add "http://localhost/..." in order to read the file.
     
    rfeio, Oct 14, 2009 IP