所以我从Web服务器上获取一个Web项目并在XAMPP中使用它。在原始代码中,用户选择要上载的文件。在提交时,文件被移动到公共html文件夹之外的上传文件夹,然后使用文件名更新数据库。然后我使用select语句从数据库中获取文件名。然后我使用php include文件在img标签中查看数据库中的文件名。
我在项目文件夹中创建了一个上传文件夹来存储图像(好像它是Web服务器中的上传文件夹),并分别更改了文件路径。
所以我的问题是图像没有显示,其他一切都工作,直到我到达读取图像的图像文件,我不知道为什么。我试图回显$ image变量来查看路径,它也没有显示。所以我认为它的图像文件本身但不能确定。不知道从哪里开始。
请仔细阅读。
文件结构:
projectfolder
- 包括
-pagelets
-upload
pagelet代码:
<?php
//Upload Image
if (isset($_POST['uploadImg'])) {
if (is_uploaded_file($_FILES['image']['tmp_name'])) {
if (move_uploaded_file($_FILES['image']['tmp_name'], "upload/{$_FILES['image']['name']}")) {
echo "File Uploaded";
}else{
echo "File not uploaded";
$i = '';
}
$i = $_FILES['image']['name'];
}else{
$i ='';
}
//Update database
$query = "UPDATE Employees SET Photo = '$i' WHERE EmployeeID = {$_SESSION['EmpId']}";
$result = @mysqli_query($dbc, $query);//Run the query
}
$query = "SELECT EmployeeID AS id, Photo AS photo, CONCAT(FirstName, ' ', LastName) AS name, PhoneNumber AS phone, Email AS email FROM Employees WHERE EmployeeID = '{$_SESSION['EmpId']}'";
$infoResult = @mysqli_query($dbc, $query);//Run the query
if($infoResult){
while($row = mysqli_fetch_array($infoResult, MYSQLI_ASSOC)){
?>
<div id="profile-pic">
<?php
echo "<img src=\"includes/view-image.inc.php?file={$row['photo']}\" alt=\"{$row['photo']}\" />";
?>
<form name="uploadForm" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>?pagelet=Dashboard" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" name="uploadImg" value="submit">
</form>
</div>
<?php
}
}
?>
包含文件:
<?php
$path = "/upload/"; //directory outside public_html on the server
$file = ($_GET['file']);
$image = $path.$file;
header("Content-Type: image/jpg");
@readfile($image);
?>
答案 0 :(得分:2)
在上传文件时,如果文件可写,您可以在任何地方使用任何文件夹。因为上传过程是服务器端。但是,当您想要访问该文件以在Web上显示它时,您应该使用public_html中的路径。
因此,将upload文件夹移动到public_html文件夹中,并记录上传过程的路径。然后,您的代码运行良好。
例如,目录应该是这样的:
的public_html /
- 上传/