成功上传图片
P粉585541766
2023-08-15 13:46:27
[PHP讨论组]
<p>我的图片显示已经上传到URL中,这意味着它已经正确上传,但我不确定,因为我在网页或数据库中看不到它的出现,但在我的文件夹目录中出现了。</p>
<p>这是我用来进行这个过程的两个页面。</p>
<p>account.php是我上传图片的地方,profile-upload.php是account.php的服务器端/后端。</p>
<p>我的account.php:</p>
<pre class="brush:php;toolbar:false;"><?php
session_start();
include_once "safe-header.php";
include_once "serverside/database-server.php";
if (isset($_SESSION['useremail']) && !empty($_SESSION['useremail'])) {
$useremail = $_SESSION['useremail'];
} else {
$useremail = 'User';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="Css/account.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Alternative Account Page</title>
</head>
<body>
<div class="upload-container">
<p class="useremail">Welcome, <?php echo htmlspecialchars($useremail); ?></p>
<div class="account-options">
<a href="update-profile.php" class="update-profile">Update Profile</a>
<a href="serverside/logout-server.php" class="logout-btn">Logout</a>
</div>
<div>
<?php
$userId = $_SESSION['userid'] ?? null;
$sql = "SELECT image FROM profile WHERE usersId = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $userId);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if ($row && !empty($row['image'])) {
echo '<img src="' . $row['image'] . '">';
} else {
echo "<p>Nothing here.</p>";
}
?>
<form action="serverside/profile-upload.php" method="post" enctype="multipart/form-data">
<label for="profile-image">Select Image</label>
<input type="file" name="profile-image">
<button type="submit" name="upload-btn">Upload Image</button>
</form>
</div>
</div>
<?php
include_once "footer.php";
?></pre>
<p>这是profile-upload.php:</p>
<pre class="brush:php;toolbar:false;"><?php
session_start();
require "database-server.php";
if (isset($_POST['upload-btn'])) {
$validExt = ['jpg', 'jpeg', 'png'];
$ext = strtolower(pathinfo($_FILES['profile-image']['name'], PATHINFO_EXTENSION));
if (in_array($ext, $validExt)) {
$location = "../uploads/";
$target = $location . uniqid() . '.' . $ext;
if (move_uploaded_file($_FILES['profile-image']['tmp_name'], $target)) {
$userId = $_SESSION['userid'];
$sql = "UPDATE profile SET image = ? WHERE usersId = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("si", $target, $userId);
$stmt->execute();
$stmt->close();
header("location: ../account.php?success=imageuploaded");
exit();
} else {
header("location: ../account.php?error=imagecantbeuploaded");
exit();
}
} else {
header("location: ../account.php?error=cannotusethisfiletype");
exit();
}
} else {
header("location: ../account.php");
exit();
}</pre>
<p>我尝试编辑代码并刷新数据库,但我没有看到问题。它已连接到数据库,CSS也是正确的。</p>
我想我知道问题出在哪里。在你的account.php文件中,你试图用以下代码显示图片:
要修复这个问题,你需要将src属性更改为图片文件的完整URL。你可以使用PHP中的realpath()函数获取图片文件的完整URL。例如,以下代码将获取图片文件的完整URL并在页面上显示: