【问题标题】:How do I download a pdf blob file from database?如何从数据库下载 pdf blob 文件?
【发布时间】:2021-11-19 07:01:12
【问题描述】:

我正在尝试使用代码从存储为 blob 数据类型的数据库中下载 pdf 文件,现在我只能以.php 而非.pdf 的形式查看该文件。

    if(isset($_POST['submit'])){
        $docno = $_POST['docno'];
        $admno = $_POST['admno'];
        $sql = "SELECT * FROM bonafide_cert WHERE DocumentNumber=:docno AND AdmssnNo=:admno";
        $query = $dbh->prepare($sql);
        $query->bindParam(':admno',$admno,PDO::PARAM_STR);
        $query->bindParam(':docno',$docno,PDO::PARAM_STR);
        $query->execute();  
        $results=$query->fetchAll(PDO::FETCH_OBJ);
        if($query->rowCount() > 0)
        {
            foreach($results as $result)
            {
                 header('Content-Type:'.$result->mime);
                 echo $result->pdf_file;
            }
        }
    }

$result->mime 包含文件的数据类型为application/pdf$result->pdf_file 包含 PDF 文件本身为 BLOB

在执行 php 代码时,我可以看到我的 pdf 文件,但该文件位于 .php 扩展名中,浏览器在其 PDF 查看器中显示该文件,但当我尝试下载时,它仍然尝试保存文件为.php。如何将文件下载为.pdf - 现在我每次都必须手动保存为 PDF。

【问题讨论】:

  • 你是不是让用户一个一个循环下载附件?
  • 每个权利都不需要吗?猜猜这没有必要。
  • 这取决于要求。如果有多个文件要发送给用户,您可以制作一个 zip 并将所有这些文件添加到其中并让用户下载该 zip。

标签: php mysql pdf blob


【解决方案1】:

尝试在您的标头和回显语句之间添加此标头代码行:

header('Content-Type:'.$result->mime);
header("Content-Disposition: inline; filename=filename.pdf");
echo $result->pdf_file;

如果您希望它下载文件,您可以将 Content-Disposition: 设置为附件。

【讨论】:

  • 这正是我一直在寻找的——谢谢队友 :)
  • 很高兴我能帮上忙,你能把它标记为已回答吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-13
  • 2016-09-02
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2014-02-13
  • 2021-03-02
相关资源
最近更新 更多