用php显示数据库中的pdf文件

I've been using this code to show my images

        <dd><?php echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

But when I want to show an pdf file I get nothing on my page, i only get my the frame from the iframe tag.

I've using this code to show my pdf file (also stored as a blob):

        <dt> <?php echo '<iframe src="data:application/pdf;base64,'.base64_encode( $result['image'] ).'"</iframe>'; ?></dt>
dongxian8858
dongxian8858 我更改了设置以下载pdf文件,但是当我打开它时说文件已损坏。
大约 3 年之前 回复
dsfbnhc4373
dsfbnhc4373 在看到上面的评论之后,这对我来说表明最近的升级可能已经将“显示文件/pdf”的默认设置更改为强制打开。检查你的浏览器设置,我有我的钱,但我可能是错的。这是一种可能性。
大约 3 年之前 回复
dongmang3961
dongmang3961 firefox56.0@Fred-ii-
大约 3 年之前 回复
duanjihe5180
duanjihe5180 您使用的浏览器和版本?@Frederic
大约 3 年之前 回复
duanpacan9388
duanpacan9388 谢谢,现在我可以看到一些pdf看页面,但仍然看不到或打开文件。
大约 3 年之前 回复
dongsong73032
dongsong73032 toolong
大约 3 年之前 回复

1个回答



您遇到问题的原因可能有多种:</ p>


  1. 数据库中的数据已损坏</ li>
  2. 从数据库中检索数据会导致数据损坏</ li>
  3. 您创建的HTML无法在浏览器中运行。< / li>
    </ ol>

    要找出罪魁祸首,您可以执行以下步骤:</ p>


    • 检索PDF数据 手动从数据库中尝试在PDF阅读器中打开它。 如果这不起作用,表中的PDF数据很可能已损坏。 检查将数据保存到数据库的过程。</ li>
    • 将检索到的数据编码到base64(通过再次解码,检查是否正确完成,并在阅读器中打开解码数据)。</ li>

    • 从PHP脚本输出base64编码的文本,并比较两个base64块的相等性。 如果它们不同,则在从数据库检索数据时,您的脚本似乎会破坏数据。</ li>
    • 使用之前生成的base64数据创建静态HTML页面,并在浏览器中打开它。 如果这不起作用,则HTML不适合将PDF嵌入其中,或者浏览器根本不支持显示PDF嵌入。</ li>
      </ ul>
      </ div>

展开原文

原文

There are different possible reasons why you have the problem:

  1. The data in the database is corrupt
  2. The retrieval of the data from the database leads to corrupted data
  3. The HTML you created simply doesn't work in your browser.

To find out the culprit, you can do the following steps:

  • Retrieve the PDF-data from the database manually and try to open it in a PDF-reader. If that doesn't work, your PDF-data in the table is most likely corrupt. Check the process saving the data to the database.
  • Encode the retrieved data to base64 (check if that was done correctly by decoding it again and open the decoded data in the reader).
  • Output the base64 encoded text from you PHP-script and compare the two base64-blocks for equality. If they differ, your script seems to corrupt the data when retrieving the data from the DB.
  • Create a static HTML-page, using the base64-data you generated before and open it in a browser. If that doesn't work, your HTML is not correct for embedding PDF into it or the browser simply doesn't support showing PDF embedded.

dousu5608
dousu5608 我仍然没有想到它,但你肯定指出了我正确的方向。 欣赏它!
大约 3 年之前 回复
dongpo9071
dongpo9071 很高兴我能帮忙(通过指向一种跟踪事物的方式)。 如果您愿意,可以接受我的答案,从未解决的案例列表中删除您的问题。 如果您更详细地跟踪问题,则可以打开一个包含这些问题的新问题,以便对其进行特定回答。
大约 3 年之前 回复
dplcue8098
dplcue8098 我一直在考虑切换图像和pdf。 我认为问题一定是我的检索代码在pdf方面有问题。
大约 3 年之前 回复
doulao5916
doulao5916 您可以只将代码添加到PHP页面,而不是使用数据库客户端,将检索到的数据保存到可用于该测试的文件中。 如果它也被破坏了,它可能是数据库中的数据损坏或者由于你的代码从数据库中检索它而破坏了数据。 但总比没有好。
大约 3 年之前 回复
duanfu1945
duanfu1945 我只是尝试了一个图像,当我从我的数据库手动下载它时,我也无法打开它,但它可以在我的网站上使用上面的代码,所以也许我正在手动检索错误? 我进入我的数据库,然后点击[blob - 64 KIB],我得到了一个下载。
大约 3 年之前 回复
douchuituo3032
douchuituo3032 你去吧 您可以通过尝试使用某些图像数据(如果它显示在图像查看器中,它是数据库中的数据,而不是下载过程)来检查您手动从数据库中检索数据的方式是否正确。
大约 3 年之前 回复
dongqiangou5724
dongqiangou5724 当我重命名为.pdf并尝试打开时,它说文件已损坏。
大约 3 年之前 回复
dpdyh86002
dpdyh86002 只需将其重命名为.pdf,或者从命令行调用您的阅读器,明确指定文件名。 嵌入式图像的HTML代码与嵌入式PDF不同。 一个是图像标签,另一个是iframe。 它们可能是浏览器处理每个浏览器中src属性的方式的差异。
大约 3 年之前 回复
douchen3562
douchen3562 我开始查看我的数据库中的文件,但是当我下载它时,它变成了.bin,我无法弄清楚如何打开它。 但这也适用于在网站上运行良好的图像。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐