如何使用外部php文件查看xampp中的图像?

问题描述:

因此,我正在从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); 
?> 
+1

什么是当前文件路径? – Mojtaba

+0

即** EXTREMELY ** 危险代码。您允许访问他们知道路径的服务器上的任何文件。例如'example.com/include.php?file = ../../../../../etc/passwd' –

+0

不能在浏览器中查看php代码。他们可以将文件名更改为不同的路径,但不会被读取。另外我试图弄清楚这一点,以便我可以做一些验证,如文件扩展名,大小等... – JavaFox

当你上传的文件,你也许可以在任何地方与任何文件夹来工作,如果他们是可写的。因为上传过程是服务器端。但是,当您想要访问该文件以在网上显示该文件时,应该使用public_html内的路径。

因此,移动public_html文件夹中的上传文件夹并记录上传过程的路径。然后,你的代码运行良好。

例如,目录应该是这样的:

的public_html/

- 上传/

+0

该代码在Web服务器上工作,它不在XAMPP中。我需要一个建议,允许我在XAMPP中使用此代码。上传文件夹是在项目文件夹(public_html) – JavaFox

+1

,这是一个非常好的,快速解决方案的建议。 – coderodour

+0

@JavaFox,所以,肯定你的路径配置错过了一些东西。你能否确认上传是否超出服务器上的public_html? – Mojtaba