使用带有搜索表单的PHP下载pdf文件

时间:2015-02-03 18:05:03

标签: php pdf download

我创建了一个搜索表单,用户可以在其中输入图像代码,搜索时会让用户下载文件。以下是我的代码

<html>
          <head>
            <title>Search  Contacts</title>
          </head>
          <body>

            <h3>Search Client File</h3>
            <form  method="post" action="#"  id="searchform">
              Type the File Code:<br><br>
                  <input  type="text" name="fcode">
            <br>
      <input  type="submit" name="submit" value="Search">
            </form>

<?php
$filecode=$_POST["fcode"];
     if (!empty($filecode))
     {
$file="/var/www/website/$filecode.pdf";
header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
     }
     else
     {
       echo "No Results";
     }

        ?>
    </body>
    </html>

问题是下载的文件无法查看或无法查看,我的代码似乎有什么问题?

3 个答案:

答案 0 :(得分:0)

尝试更改此标头:

header('Content-Type: application/pdf');

答案 1 :(得分:0)

您的代码永远不会有效。您正在每次执行代码时输出HTML表单。如果请求下载,则下载将附加到该HTML页面。 header()来电也会失败,并且#34;标头已经发送过&#34;。

如果您要将表单提交到同一页面,则需要首先下载您的下载代码:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   ... download stuff here
   exit(); // critical - don't let the html get output
}

... html form here ...

答案 2 :(得分:0)

我已经开始工作,下面是参考代码。

header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    ob_end_flush();
    readfile($file);