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

时间:2013-04-11 20:50:18

标签: php html image

以我的php形式发送图像,它会保存到我的服务器上和 它会显示action.php页面。现在,当我尝试:

echo '<div id="image"><img src="'.$target_path.'" width="280" height="280"></div>';

它工作得很好......但如果我在我的PHP代码末尾添加unlink($target_path);它 即使在显示图像后它被删除,它也不会显示图像...

所以问题是,如何在同一时间显示图像并将其删除,以便我的服务器不会被用户图片填满?

3 个答案:

答案 0 :(得分:4)

尝试另一件事:输出图像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>';

(而不是move_uploaded_file()等,使用$_FILES[...]['tmp_name']

作为$ file变量

答案 1 :(得分:3)

您可以通过创建一个获取image-filename的小脚本来实现这一点,并在检索完后删除它:

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

然后在HTML输出中链接到该脚本:

<img src="path/to/image.php?image=893sudfD983D" />

如果你设置好的缓存标题,用户就不会注意到你的服务器只提供了一次文件。

答案 2 :(得分:1)

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

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