如何使用php和html同时显示图像和/或文件? [已关闭]

问题描述 投票:0回答:1

所以我尝试使用 PHP 和 HTML 上传和显示图像和文件(位于 mysql 数据库(blob)内),但是当我尝试这样做时:

<td>
<?php echo $cintia['id']; ?>
</td>
<td>
<?php echo $cintia['nombre']; ?>
</td>
<td>
if(strpos($archivo, 'image') !== false) {
<image src="data:image/jpg;base64,<?php echo base64_encode($cintia['archivo']); ?>"/>
else {
<embed src="data:application/pdf;base64,<?php echo base64_encode($cintia['archivo']); ?>"/>
}
</td>

即使有指令,它也会显示它们;所以我认为它与回声有关 当我插入图像或文件时,它看起来是什么样子

我尝试更改与 echo 和 if 指令相关的内容,但它们似乎不起作用。我还想知道是否有一种方法可以显示图像和文件,而无需专门使用

<img src="data:image/jpg...>
<embed src="data:application/pdf...>
进行编写,因为这更像是一种绝望的方法,而不是真正的解决方案。

我正在使用 mysql 和 longblob 来处理文件(但我真的认为这是我不明白的关于 echo 的事情)

php html mysql xampp blob
1个回答
0
投票

为什么要将图像以base64存储在数据库中?

做你想做的事最好的事情是:

  • 上传文件时:

    1. 将文件存储在文件系统上
    2. 获取存储文件的PATH
    3. 将此路径存储在数据库中
  • 当您想要显示图像时

    1. 查询数据库并获取PATH
    2. 然后用自然的 IMG src 标签回显它,而不进行任何解码。这样您就可以毫无问题地显示您的文件。

如果您仍然需要/想要使用 base64,在您的基本代码中,您忘记将 PHP if 语句包装到标签中。 我会说:

<td>
    <?php echo $cintia['id']; ?>
</td>
<td>
    <?php echo $cintia['nombre']; ?>
</td>
<td>
<?php
    if(strpos($archivo, 'image') !== false) { ?>
        <image src="data:image/jpg;base64,<?php echo base64_encode($cintia['archivo']); ?>"/><?php
    } else { ?>
        <embed src="data:application/pdf;base64,<?php echo base64_encode($cintia['archivo']); ?>"/><?php
    } ?>
</td>
© www.soinside.com 2019 - 2024. All rights reserved.