【问题标题】:Pulling pdf BLOB from database using php and displaying it in a html page not working使用php从数据库中提取pdf BLOB并将其显示在html页面中不起作用
【发布时间】:2025-12-13 07:40:02
【问题描述】:

我正在尝试检索 blob pdf,然后将其显示在页面上。 我正在使用以下代码,但是只显示 base 64 字符串,而不是我想要的输出 pdf。

以下是我正在使用的代码。

<?php
    //header('Content-type: application/pdf');
    require 'connect.php';
    $db=mysqli_connect($mysql_host, $mysql_user, $mysql_password,$mysql_dbName);
    $sql = "SELECT * FROM files WHERE id = 1688";
    $sth = $db->query($sql);
    $result=mysqli_fetch_array($sth);
    $pdf = base64_encode($result['file']);
    echo $pdf;
?>
<object data="<?php echo $pdf ?>" type="application/pdf"></object>

我尝试过使用

<object data="data:application/pdf;base64,<?php echo base64_encode(content) ?>" type="application/pdf" style="height:200px;width:60%"></object>

并且还把它放在这样的 iframe 中

<object data="data:application/pdf;base64,<?php echo base64_encode($result['file']) ?>" type="application/pdf">
    <iframe src="data:application/pdf;base64,<?php echo base64_encode($result['file']) ?>"></iframe>
</object>

但是pdf文件加载失败。

------------编辑 5/8/17--------

我现在正在使用下面的代码动态添加 iframe,但我收到一个错误提示

资源被解释为 Document 但以 MIME 类型传输 申请/pdf:

这是我新添加的javascript

var iframe = document.createElement('iframe');

var src = $('#hiddenBase64').val();//this stores the base64 string

$(iframe).width("100%");

$(iframe).height("100%");

iframe.src = "data:application/pdf;base64," + src;

document.body.appendChild(iframe);

感谢您的帮助。

【问题讨论】:

  • 这已经被回答了。 *.com/questions/40948761/…
  • 我已经看过这个答案,但是当我尝试这种方法时,pdf文件无法加载。
  • 读取 cmets,用户需要将其放入 iframe 中。
  • 当我将它放入 iframe 时,pdf 仍然无法加载。我不太熟悉使用 iframe 我正在创建这样的 iframe。

标签: php jquery mysql pdf mime-types


【解决方案1】:

删除 echo $pdf。这也会在之前输出 base64_encoded pdf。

【讨论】:

    【解决方案2】:

    所以我并没有真正做到这一点,并且已经阅读Here 将文件存储在数据库中是不好的做法。 (我无法弄清楚为什么 pdf 无法加载)

    我现在正在做的是将文件存储在我服务器上的子文件夹中。然后我在数据库中存储一个指向该文件的链接并显示该文件,我只需运行一个拉取链接的选择查询,然后我就有了链接。

    【讨论】: