无法从源显示图像。 PHP / MySQL的

时间:2014-07-29 16:34:36

标签: php mysql image

我曾写过一篇关于此事的帖子,但从那以后我做了一些改动并尝试了其他的事情。我正在尝试允许用户上传可在其个人资料中显示的个人资料图片。

然而,我能够使上传脚本正常工作,但在尝试显示图像时,我似乎得到了一个图像框。我发现数据库表更新到新图像并将其保存在文件夹中,然后在尝试显示该图像时,我能够回显文件名或只是一个空白图像框。

任何帮助都将非常感谢(Y)

PHP显示图片:

<?php echo '<img src="', $user_data['profile'], '" alt="', $user_data['name'], '\'s  Profile Image">'; ?>

PHP图片上传脚本(这有效,我相信它可能是函数脚本中的内容):

        <?php
        if (isset($_FILES['profile']) === true) {
            if (empty($_FILES['profile']['name']) === true) {
                ?>
                <p>You have not chosen a image</p>

                <?php

            } else {
                $allowed = array('jpg', 'jpeg', 'gif', 'png');

                $file_name = $_FILES['profile']['name'];
                $file_extension = end((explode('.', $file_name)));
                $file_temp = $_FILES['profile']['tmp_name'];

                if (in_array($file_extension, $allowed) === true) {
                    change_profile_image($session_user_id, $file_temp, $file_extension);
                       header('Location: profile.php?success');
                    exit();

                } else {
                    echo 'Incorrect file type. Allowed: ';
                    echo implode(', ', $allowed);
                }
            }
        }

        if (empty($user_data['profile']) === false) {
            echo '<img class="profileimg" src="', $user_data['profile'], '" alt="', $user_data['name'], '\'s Profile Image">';
        }

        ?>
            <form action="" method="post" enctype="multipart/form-data">
              <input type="file" name="profile">
              <div class="submit3">
                <input type="submit" value="Upload" name="complete"/>
              </div>            
            </form>

功能脚本:

function change_profile_image($user_id, $file_temp, $file_extension) {
  $file_path = 'images/profile/' . substr(md5(time()), 0, 10) . '.' . $file_extension;
  move_uploaded_file($file_temp, $file_path);
  mysql_query("UPDATE `users` SET `profile` = '" . mysql_real_escape_string($file_path) . "'  WHERE `user_id` = " . (int)$user_id);}

我认为它与函数脚本有关,但经过几天更改脚本后,我仍然无法在上传后显示图像。 PS:是的我知道我应该使用MSQLI函数,但我只是想完成一个大学项目来了解我的PHP知识。

3 个答案:

答案 0 :(得分:1)

我们可能缺少相当多的信息,但您要在数据库中保存相对路径(images/profile/...),并将其用作图像的src。是从Web客户端看到的正确路径吗?

要查明问题,请检查:

  • 文件确实保存在应该
  • 的位置
  • 访问图片的网址应为
  • 如果您确实可以在直接访问该网址时加载图片
  • <img src>
  • 中显示的网址
  • 如果匹配: - )

答案 1 :(得分:0)

好的我发现了问题,我在文件夹中有一个阴影文件。这应该阻止访问者管理访问该文件夹,但也不允许脚本显示文件夹中的图像。

将没有问题的文件上传到目标文件夹,数据库/ PHP可以找到该图像源 - 但无法访问它以显示。

我希望这有助于将来可能遇到同样问题的其他人。

感谢为此帖做出贡献的任何人。

答案 2 :(得分:-1)

在我的情况下,图像路径很可能缺少您创建的用于存储上载图像的文件夹

echo '<img src="images/'.$image.'" />';