因此,我正在從Web服務器上獲取一個Web項目並在XAMPP中使用它。在原始代碼中,用戶選擇要上傳的文件。提交時,文件被移動到公共html文件夾之外的上傳文件夾,然後用文件名更新數據庫。然後,我使用select語句從數據庫中獲取文件名。然後我使用一個php包含文件來查看img標籤中的圖像,並使用數據庫中的文件名。如何使用外部php文件查看xampp中的圖像?
我在項目文件夾中創建了一個上傳文件夾來存儲圖像(就像它是Web服務器中的上傳文件夾一樣),並分別更改了文件路徑。
所以我的問題是,圖像不顯示,一切工作,直到我到圖像文件讀取圖像,我不知道爲什麼。我試圖回顯出$ image變量來查看路徑,它也不顯示。所以我認爲它的圖像文件本身,但不能確定。不知道該從哪裏出發。
請仔細閱讀。
文件結構:
projectfolder
- 包括
-pagelets
-upload
小網頁代碼:
<?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);
?>
什麼是當前文件路徑? – Mojtaba
即** EXTREMELY ** 危險代碼。您允許訪問他們知道路徑的服務器上的任何文件。例如'example.com/include.php?file = ../../../../../etc/passwd' –
不能在瀏覽器中查看php代碼。他們可以將文件名更改爲不同的路徑,但不會被讀取。另外我試圖弄清楚這一點,以便我可以做一些驗證,如文件擴展名,大小等... – JavaFox