【问题标题】:Unable to download a pdf file from database, it show plain notepad out无法从数据库下载 pdf 文件,它显示普通记事本
【发布时间】:2014-03-20 06:38:32
【问题描述】:

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

这是a href

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

这是下载.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。

【问题讨论】:

  • Mysql中“内容”字段的类型是什么?
  • @mesutozer.. 它是 longblob...
  • 下载的文件名是否正确?
  • hmmm ...你是什么意思正确的文件名?
  • 我的意思是下载的文件名称与数据库中的“file_name”字段相同。或者它有一个通用名称,如“download(1)”?

标签: php pdf


【解决方案1】:

我猜你的结果集是空的:你的查询没有匹配任何行。这解释了空文件内容和空文件名。

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

顺便说一句:您的代码中存在 SQL 注入 漏洞

【讨论】:

  • 下载链接是localhost/isiti/download.php?id=%3C?php=$id;?%3E...这是否意味着我确实将ID传递给了download.php?
  • 你传错了。当您已经在 php 上下文中时,您似乎正在打开一个 标签
  • 您似乎正在打印链接,例如 echo 'Download [pfd]';您需要将其替换为 echo 'Download [pfd]'
  • 是的......它的作品......非常感谢......没有你的帮助我可能会修复它......谢谢..
  • 你能看看我的第二条评论吗?您似乎在单引号内的 echo 语句中
猜你喜欢
  • 2019-05-21
  • 2017-04-17
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2021-11-19
  • 1970-01-01
相关资源
最近更新 更多