无法从数据库下载pdf文件,它会显示简单的记事本

时间:2014-03-20 06:38:32

标签: php pdf

我正在尝试做一个能够从数据库下载pdf文件的ahref,但是在我点击之后下载一个普通的记事本而不是pdf,里面没有数据。

这是一个href

<a href="download.php?id=<?php=$id;?>">Download [pfd]</a> <br>

这是download.php

<?php

// Connect to the database
        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password=""; // Mysql password 
        $db_name="is"; // Database name 
        $tbl_name="publication"; // Table name 

        $conn = mysql_connect("$host", "$username", "$password"); 
        if(! $conn )
        {
          die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($db_name);

    if (isset($_GET["id"]) && !empty($_GET["id"])) { 

            $id= $_GET['id'];

            $query = "SELECT file_name, file_type, file_size, content " .
                     "FROM $tbl_name WHERE file_id = '$id'";

            $result = mysql_query($query) or die(mysql_error()); 
            list($name, $type, $size, $content) = mysql_fetch_array($result);

            header("Content-length: $size");
            header("Content-type: $type");
            header("Content-Disposition: attachment; filename=$name");
            echo $content;

            mysql_close($conn);
            exit;
            }


?>

我在数据库中存储文件名,类型,大小和内容但无法将其下载为pdf。文件类型是application / pdf。

1 个答案:

答案 0 :(得分:0)

我猜您的结果集为空:您的查询与任何行都不匹配。这解释了空文件内容&amp;空文件名。

由于此页面强制文件下载即使出现错误,您也可能错过了错误消息。您可以尝试暂时删除下载标头以查看错误。也可以在单击链接时按CTRL在新窗口中打开下载链接。这样您就可以验证下载URL是否真的包含ID。

BTW:您的代码中存在 SQL注入漏洞