Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php上传后从服务器上删除图像&;显示_Php_Html_Image - Fatal编程技术网

php上传后从服务器上删除图像&;显示

php上传后从服务器上删除图像&;显示,php,html,image,Php,Html,Image,在我的php表单中发送一个图像,它会保存到我的服务器上,并在 将显示action.php页面。现在,当我尝试: echo '<div id="image"><img src="'.$target_path.'" width="280" height="280"></div>'; echo'; 它工作得很好。。。但是如果我添加unlink($target\u path)在我的php代码的末尾 即使在显示图像后将其删除,也不会显示图像 因此,问题是,如何在显示

在我的php表单中发送一个图像,它会保存到我的服务器上,并在 将显示action.php页面。现在,当我尝试:

echo '<div id="image"><img src="'.$target_path.'" width="280" height="280"></div>';
echo';
它工作得很好。。。但是如果我添加
unlink($target\u path)在我的php代码的末尾
即使在显示图像后将其删除,也不会显示图像


因此,问题是,如何在显示图像的同时将其删除,以便我的服务器不会塞满用户图片?

尝试另一件事:输出图像base-64编码

$contents = file_get_contents($file);
$base64 = base64_encode($contents);
echo '<div id="image"><img src="data:image/jpg;base64,'.$base64.'" width="280" height="280"></div>';
$contents=file\u get\u contents($file);
$base64=base64_编码($contents);
回声';

(使用
$\u FILES[…]['tmp\u name']
作为$file变量,而不是
移动上传的文件()
等)

您可以通过创建一个获取图像文件名的小脚本来实现这一点,并在检索后将其删除:

<?php
$file = image_file_from_parameter($_GET['image']); 
headers_for_file($file);
readfile($file);
unlink($file);

当您使用
img src
回显图像的url时,您只是向浏览器发送图像的url,而不是实际的图像数据。如果希望通过这种方法查看图像,则图像需要保留在服务器上


您可以使用bwoebi的解决方案来传递实际的图像数据,而不是链接,但更好的解决方案是将图像保留在服务器上,并定期删除旧文件。

在浏览器获取图像之前,图像会被删除。首先检索HTML页面,在浏览器能够获取图像之前,
unlink
命令已经执行。这相当昂贵,需要占用大量带宽。是的(系数8/5),但这种方法工作起来没有问题,也没有黑客;)(8/5这么多…?)@MrMadMan仅供参考:您可能需要将
image/jpg
更改为
image/png
等,具体取决于您使用的文件类型。如果我想支持尽可能多的类型(jpg、png、gif、jpeg等),该怎么办?@MrMadMan做一些切换:
切换(strtolower($extension)){case“jpg”:case“jpeg”:$mime=“image/jpg”;break;case“png”:$mime=“image/png”;break;case“…:$mime=“…”;}
如果我在页面顶部添加这个,它会加载一个空白页面。最好从参数定义函数
图像文件\u和
文件头\u
你自己…@MrMadMan你必须首先检查$\u是否获得['image']已设置,否则将抛出一些错误。并且来自参数的函数头文件和图像文件不存在。您应该编写它来实际设置正确的标题
<img src="path/to/image.php?image=893sudfD983D" />