首页 > 解决方案 > 如何从数据库中显示 blob 数据类型的 PDF 文件?

问题描述

请帮我。

我试图将已转换为 blob 数据类型的 PDF 文件保存在数据库中,并且成功。但是,我不知道如何检索(*retrieve 是成功的)数据并将其再次显示为 PDF 文件。我已经尝试了我在互联网资源中找到的所有内容,但都没有成功。我尝试的一些互联网源代码可以保存从 blob 解码的 PDF 文件,但文件已损坏。

希望有人能给我指路。谢谢。

以下是将 blob 数据类型显示为 PDF 的代码($filepath 来自 blob):

<?php
ini_set('session.save_path', '../tmp');
session_start();

$req_id = "";
$refno  = "";
$req_status = "";

if(isset($_SESSION['AUTHORISATION']))
{
    include '../conn.php';

    if($_SESSION['AUTHORISATION'] != "ACCESS GRANTED")
    {
        echo "<script type='text/javascript'>alert('Please login to continue..');window.location.href='../login';</script>";
    }
    else
    {
            if((isset($_POST['request_id'])) && (isset($_POST['req_refno'])) && (isset($_POST['file_no'])))
            {
                $req_id = $_POST['request_id'];
                //echo $req_id;
                $refno  = $_POST['req_refno'];
                //echo $refno ;
                $req_status  = $_POST['file_no'];
                //echo $req_status ;

                if($req_status == 1){
                    // echo $req_id;
                    // echo $req_title;
                    $result = mysqli_query($conn, "Select * from attachment where req_refno = '$refno' and type = 'Summary File';");

                    while($row= mysqli_fetch_array($result)){
                        //get row from table selected
                        $filename = $row['req_attachment_name'];
                        //echo $filename;
                        $filepath = $row['req_attachment_path'];
                        //echo $filepath;

                        //save pdf to computer
                        header("Content-Type: application/pdf");
                        header("Content-Length: ".strlen($filepath));
                        header('Content-Disposition: attachment; filename='.$filename);
                        echo $filepath;

                    }

                }
                else
                {
                    echo "<script type='text/javascript'>alert('Problem to open file!');window.location.href='pending';</script>";
                }
            }
            else
            {
                echo "<script type='text/javascript'>alert('Please select a record first!');window.location.href='pending';</script>";
            }
    }
}
else
{
    echo "<script type='text/javascript'>alert('Please login to continue..');window.location.href='../login';</script>";
}

?>

标签: phpdatabasepdfblob

解决方案


真的$filepath = $row['req_attachment_path'];是pdf文件的内容/数据吗?req_attachment_path似乎只是路径而不是内容。租赁验证并检查请求的响应。在浏览器中,您可以在开发者控制台中看到响应,您可以在其中看到结果是 PDF 内容还是仅仅是路径。


推荐阅读