我曾写过一篇关于此事的帖子,但从那以后我做了一些改动并尝试了其他的事情。我正在尝试允许用户上传可在其个人资料中显示的个人资料图片。
然而,我能够使上传脚本正常工作,但在尝试显示图像时,我似乎得到了一个图像框。我发现数据库表更新到新图像并将其保存在文件夹中,然后在尝试显示该图像时,我能够回显文件名或只是一个空白图像框。
任何帮助都将非常感谢(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知识。
答案 0 :(得分:1)
我们可能缺少相当多的信息,但您要在数据库中保存相对路径(images/profile/...
),并将其用作图像的src
。是从Web客户端看到的正确路径吗?
要查明问题,请检查:
<img src>
答案 1 :(得分:0)
好的我发现了问题,我在文件夹中有一个阴影文件。这应该阻止访问者管理访问该文件夹,但也不允许脚本显示文件夹中的图像。
将没有问题的文件上传到目标文件夹,数据库/ PHP可以找到该图像源 - 但无法访问它以显示。
我希望这有助于将来可能遇到同样问题的其他人。
感谢为此帖做出贡献的任何人。
答案 2 :(得分:-1)
在我的情况下,图像路径很可能缺少您创建的用于存储上载图像的文件夹
echo '<img src="images/'.$image.'" />';