试图在php中显示来自文件系统的图像

时间:2015-03-03 11:55:58

标签: php

今天我正在寻求帮助。如果我犯了一些错误,这是我第一次提前抱歉 我正在尝试编写一个显示图像的小型Web应用程序。最初我使用blob格式将我的图像存储在数据库中,但是从这里研究人们建议使用文件系统。我的问题是我无法显示图像。它可能是一个非常小的错误,甚至是对文件位置的错误引用,但是我无法使它工作。 这是一个小项目,我希望能够改进并希望创建一种照片库。我在本地主机上运行此应用程序。

我遇到了从文件系统显示图像的问题。

// index.php
<form action="process.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" name="submit" value="Upload" />
</form>

然后,我的表单会进入处理请求的流程页面。

  <?php
 // process.php

 // connect to the database
 include 'connection.php';
 // take in some file data
 $filename =$_FILES['image']['name'];
 // get the file extension
 $extension = strtolower(substr($filename, strpos($filename, '.')+1));

// if the file name is set
if(isset($filename)){

// set save destination
$saved ='images/'; 

// rename file 
$filename = time().rand().".".$extension;

$tmp_name=$_FILES['image']['tmp_name'];
// move image to the desired folder
if(move_uploaded_file($tmp_name, $saved.$filename)){ 
echo "Success!";

// if success insert location into database
$insert="INSERT INTO stored (folder_name,file_name) VALUES('$saved',   '$filename')";
// if the query is correct
if($result=mysqli_query($con,$insert)){
echo "DONE";
echo"</br>";
// attempt to print image
echo "<img src=getimage.php?file_name=$filename>";
}

}
}

else{
 echo "Please select a photo!!";
}
?>

现在你可以看到我有一个&lt; img&gt;标签。为了尝试和学习,我试图只显示最近上传的图像。为了尝试这样做,我创建了一个getimage文件。

<?php
 //getimage.php

// set the page to display images
header("Content-Type: image/jpeg");

include "connection.php";

// get requested filename
$name = ($_GET['file_name']);

$query = "SELECT * FROM stored WHERE file_name=$name";

$image = mysqli_query($con,$query);

$row = mysqli_fetch_array($image,MYSQLI_ASSOC);
$img = $row['file_name'];

echo $img;
?>    

我的数据库结构如下:      数据库名称= db_file      表名=存储。      columns = folder_name,file_name

同样,这只是一个小项目,所以我知道如果我想创建一个更大的更高效的应用程序,我将不得不改变数据库。

1 个答案:

答案 0 :(得分:-1)

您似乎使用数据库查找来获取文件名,但您已经拥有文件名。尝试添加文件夹名称,创建有效路径。

更改

$img = $row['file_name'];

$img = $row['folder_name'] . '/' . $row['file_name'];

检查您的<img>标记,看看是否存在正确的网址。您可能需要也可能不需要'/',这取决于您存储文件夹名称的方式。您可能需要添加域名。没有足够的信息知道需要什么。

您的<img>应该是这样的

<img href="http://www.yourdomain.com/folder name/file name">

最后