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

尝试在php中显示文件系统中的图像,php,Php,今天我在寻求帮助。如果我犯了一些错误,这是我第一次提前道歉 我正在尝试编写一个显示图像的小型web应用程序。最初,我使用blob格式将图像存储在数据库中,但通过研究,人们建议使用文件系统。我的问题是我无法显示图像。这可能是一个非常小的错误,甚至是对文件位置的错误引用,但我无法使其正常工作。 这是一个小项目,我希望能够改进,并希望创建一个类似照片库的项目。我正在本地主机上运行此应用程序 我在显示文件系统中的图像时遇到问题 // index.php <form action="process.

今天我在寻求帮助。如果我犯了一些错误,这是我第一次提前道歉 我正在尝试编写一个显示图像的小型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>
//index.php
然后,我的表单将进入一个处理请求的流程页面

  <?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!!";
}
?>

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

改变

$img = $row['file_name'];

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

您的
应该如下所示

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


最后

什么东西没有按预期工作?请更详细地描述您的问题。;)也许您可以测试代码的各个部分。在上面的代码中,'getimage.php'脚本中的数据库连接调用似乎是多余的-您已经在上面的代码中定义了图像名称。如果您显示以下所有错误(文件顶部)<代码>错误报告(E_全部)
ini_集('display_errors','1')你有什么错误吗?@matthias谢谢你的回复。我习惯于显示数据库中的blop图像,但从未处理过文件系统。最初我会得到像这样的图像源:echo“”;但是,当使用文件系统时,它似乎不起作用。@Bono我没有收到任何错误。我得到了破碎的图像符号。这使我相信,我提到的图像是错误的。我真不知道该怎么办谢谢你的回复。我的getimage文件现在看起来像这样$image=mysqli_query($con,$query);//获得对关联数组$row=mysqli\u fetch\u数组($image,mysqli\u ASSOC)的访问权$img=$row['folder_name']./'$行['file_name'];echo$img;但是,我仍然在chrome中看到损坏的图像图标。@DetectiveClarke:echo命令只是打印出文件夹和文件名。因此,如果该文件确实存在并且被正确引用,请查看您的文件系统。我建议您在上面的脚本中添加文件名。还请说明您使用浏览器查看的内容。@matthias我可以在我的phpmyadmin中看到上传成功。示例:images/14253848974144.jpg如果图像存在,我会签入getimage文件吗?我还添加了文件名,谢谢suggestion@DetectiveClarkephpMyAdmin仅允许您检查上载文件是否保存了数据集。但好的,只有在
move\u uploaded\u file
成功返回时才能执行此操作。但是你能在系统中看到上传的文件吗?如使用FTP客户端进行检查。尝试访问完整URL名称内的图像,例如@matthias yes当我以上述格式输入保存的图像文件名时,上载的图像会显示出来。
$img = $row['folder_name'] . '/' . $row['file_name'];
<img href="http://www.yourdomain.com/folder name/file name">