【问题标题】:Pass image path from database to HTML image source using PHP使用 PHP 将图像路径从数据库传递到 HTML 图像源
【发布时间】:2015-11-26 23:24:53
【问题描述】:

我有一个pics 表,其中包含上传照片的路径。如果用户上传了照片,我想显示该图像。我有一个 users 表,其中有一个 pic_id 引用 pics 表中的 pic_id

表架构:

在用户上传照片后,我将用户表中的pic_idpics 表中的pic_id 引用在一起,该表还包含图片名称和路径。

如果用户上传了照片,我想在 div 中显示上传的照片。如果不是,我将默认照片归于用户。

HTML 示例代码:

<div id = "inner_menu_img">
    <img id = "pics" src = "getimage.php">
</div>

在getimage.php里面:

<?php
session_start();
include 'db_connect.php';
    if(isset($_SESSION['pic_id']))
    {
        $pic_id = $_SESSION['pic_id'];
          $sql_select = "SELECT filepath FROM pics WHERE pic_id = '$pic_id'";
          $result = $conn->query("$sql_select");
          $filepath = $result->fetch_assoc();
          $path = $filepath['filepath'];
            $finfo = finfo_open(FILEINFO_MIME_TYPE);  // return mime type ala mimetype extension
            $mime_type = finfo_file($finfo, $path);
            finfo_close($finfo);
            switch($mimetype)
            {
                case "image/jpeg":
                header ('content-type: image/jpeg'); 
                echo '<img src = ".$path.">';
                break;

                case "image/png":
                header ('content-type: image/png'); 
                echo '<img src = ".$path.">';
                break;
            }  
    }
    else
    {
        echo "uploaded_images/default_photo.jpg";
    }
?>

我不确定这是否是正确的方法,因为我正在尝试自学 PHP。如果有更简单的方法可以使用 AJAX 或任何其他方式来做到这一点,我很乐意试一试。

【问题讨论】:

    标签: php jquery html mysql sql


    【解决方案1】:

    如果您正在处理项目,我建议您使用框架。如果你只是测试东西,这很好。出于测试目的,我会将代码放在 HTML 之前,只需将图像的路径分配给一个变量,然后在图像的 src 中回显此路径。

    <?php
    ...
    if(isset($_SESSION['pic_id']))
        ...
        $imageSrc = '/path/to/image.jpg';
    } else {
        $imageSrc = '/path/to/default.jpg';
    }
    ?>
    <!doctype html>
    <html>
    <body>
        <img src="<?php echo $imageSrc ?>">
    </body>
    </html>
    

    【讨论】:

    • 如果我想将 PHP 代码和 HTML 代码分开,我只需要在顶部添加 include phpcode.php 吗?
    • 是的,你可以这样做。
    • 它现在可以工作了,只是它会在页面顶部回显路径。
    • 确保您的 phpcode.php 文件中没有任何 echo
    【解决方案2】:

    如果您只想返回带有新图像 url 或 html 的字符串,请不要将 content-type 设置为任何图像格式。
    否则,如果您真的想发回上传的图片,请参阅this post

    【讨论】:

      【解决方案3】:

      在你的情况下,我看到了两种解决方案:

      • 在记录时,创建一个带有 pic 路径的会话变量,并在 src 属性中简单地回显它
        • 如果您想保留您的 getimage 脚本,请不要返回 html 标记,而是在 var 中加载图像并回显此 var 和图像的内容类型,仅此而已(如果您想研究它,请搜索图像代理模式)

      祝你好运

      【讨论】:

        【解决方案4】:

        以更好的方式:

        <?php
        ...
        if(isset($_SESSION['pic_id']))
            ...
            $imageSrc = $_SESSION['pic_path'];
        } else {
            $imageSrc = '/path/to/default.jpg';
        }
        ?>
        <!doctype html>
        <html>
        <body>
            <img src="<?php echo $imageSrc ?>">
        </body>
        </html>
        

        但是如果你正在学习PHP,现在不要从框架开始,你必须先了解POO,并且了解基本的程序方面

        【讨论】:

          猜你喜欢
          • 2021-03-29
          • 2018-05-09
          • 2012-07-26
          • 2013-07-18
          • 1970-01-01
          • 2011-04-21
          • 2015-09-18
          • 1970-01-01
          • 2018-08-10
          相关资源
          最近更新 更多