如何使用PHP从MySQL中显示.pdf文件

3
亲爱的大家,我能够从MySQL中显示图像。但是当我想要显示存储在我的数据库中的PDF时,我就做不到了。当我使用这段代码时,它会显示一个小绿色的图像,但不会显示.pdf文件。这段代码适用于图像。但是我无法显示.pdf文件。请问有人可以告诉我在我的代码中我需要改变什么吗?并且我请求提供正确的修改行,以便能够显示PDF文件。谢谢您的帮助。
<?php

    $servername = "localhost";
    $username   = "root";
    $dbname     = "db_dat";
    $password   = "";


    $conn = mysqli_connect($servername, $username, $password, $dbname);

    $passno="";
    $doi="";
    $doe="";
    $poi="";
    $empid='';
    $emp_name='';
    $desg='';
    $comp_add='';
    $dob='';
    $img='';


   if (isset($_POST['pass'])) {
        $passno=$_POST['pass'];
    }
    if (isset($_POST['dateofissue'])) {
        $doi=$_POST['dateofissue'];
    }
    if (isset($_POST['dateofexpiry'])) {
        $doe=$_POST['dateofexpiry'];
    }
    if (isset($_POST['issueplace'])) {
        $poi=$_POST['issueplace'];
    }
    if (isset($_POST['issueplace'])) {
        $poi=$_POST['issueplace'];
    }
    if (isset($_POST['content'])) {
        $empid=$_POST['content'];
    }
    if (isset($_POST['name'])) {
        $emp_name=$_POST['name'];
    }
    if (isset($_POST['designation'])) {
        $desg=$_POST['desgination'];
    }
    if (isset($_POST['companyaddress'])) {
        $comp_add=$_POST['companyaddress'];
    }
    if (isset($_POST['dateofbirth'])) {
        $dob=$_POST['dateofbirth'];
    }
    if (isset($_POST['image'])) {
        $img=$_POST['image'];
    }



    $sql = "SELECT * from upload WHERE EMP_ID='".$empid."'";
    $result = mysqli_query($conn,$sql) ;
    while($row = mysqli_fetch_array($result)){
       $img= '<img src="data:image/jpeg;base64,'.base64_encode( $row['image'] ).'"/>';
       $passno=$row['passport_no'];
       $doi=$row['dateofissue'];
       $doe=$row['dateofexpiry'];
       $poi=$row['placeofissue'];
       $empid=$row['EMP_ID'];
       $emp_name=$row['employee_name'];
       $desg=$row['designation'];
       $comp_add=$row['company_address'];
       $dob=$row['dateofbirth'];
    }
?>    
<!DOCTYPE html>
<html>
    <head>


        <body>
            <form method="POST" action="" >
                <table>
                    <tr><td>Enter Employee Id</td> <td><input type="text" name="content"   id="content"></td></tr>
                    <tr><td><input type="submit" class="FormSubmit"></td></tr>
                    <tr><td>Employee Name</td> <td>        <?php echo $emp_name; ?> </td></tr>
                    <tr><td>Employee desgination</td> <td> <?php echo $desg; ?> </td></tr>
                    <tr><td>Company Address</td> <td>      <?php echo $comp_add; ?> </td></tr>
                    <tr><td>DOB.</td> <td>                 <?php echo $dob; ?> </td></tr>
                    <tr><td>Date of Issue</td> <td>        <?php echo $doi; ?> </td></tr>
                    <tr><td>Date of Expiry</td> <td>       <?php echo $doe; ?> </td></tr>
                    <tr><td>Place of Issue</td> <td>       <?php echo $poi; ?> </td></tr>
                    <tr><td>Passport Image</td> <td>       <?php echo $img; ?> </td></tr>
                    <div class="space"></div>
                    <div id="flash"></div>
                    <div id="show"></div>
                    </div>
                </table>
            </form>    
        </body>
    </head>    
</html>
3个回答

0

这是因为您正在添加图像而不是 PDF 文件... 我们没有像图像那样的 <pdf 标签,因此请创建可点击的链接。PDF 和图像之间有所不同。

您的可点击链接将由以下语句生成:

 $img="<a href='"$row['image']."'>Download </a> ";

另一种方法是使用iframe,您可以创建一个iframe并在其中打开pdf。
 echo" <iframe src='"$row['image']."'></iframe>";

row['image'] 必须有完整的路径,例如

 http://hostname.com/uploads/yourPDFfile.pdf

1
亲爱的Danyal,我想告诉你,我的所有PDF文件都以BLOB类型存储在数据库中。 - Rupesh Arora
当我用你的 $img="<a href='"$row['image']."'>Download </a> "; 替换我的 $img= '<img src="data:image/pdf;base64,'.base64_encode( $row['image'] ).'"/>'; 后,就会出现一些像代码的图像,其中包含 eŒf–€ (¢€ (¢€ (¢€çúÑEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQ ,当我点击这段代码时,会出现“Bad Request”页面,上面写着“Your browser sent a request that this server could not understand.”。Apache/2.4.9 (Win64) PHP/5.5.12 Server at localhost Port 80 - Rupesh Arora

0

要显示PDF文件,您必须设置适当的标头以显示该文件。 尝试设置这些标头并将$filename替换为您的文件路径。

  header('Content-type: application/pdf');
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('Content-Transfer-Encoding: binary');

1
亲爱的Vickrant,我认为您没有仔细阅读我的代码。我想要显示PDF文件以及文本。如果我使用以下代码:header('Content-type: application/pdf'); header('Content-Disposition: inline; filename="' . $filename . '"'); header('Content-Transfer-Encoding: binary');那么我的整个页面只会显示PDF文件而没有任何文本。所以,请您给出能够同时显示PDF文件和文本的代码。并且,我想告诉您的是,我的PDF文件存储在数据库中,其类型为BLOB,而不是服务器上。 - Rupesh Arora

0

在显示 PDF 文件之前,首先检查它是否为 PDF 格式,然后从您的目录中提供 PDF 图像的路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接