以我的php形式发送图像,它会保存到我的服务器上和 它会显示action.php页面。现在,当我尝试:
echo '<div id="image"><img src="'.$target_path.'" width="280" height="280"></div>';
它工作得很好......但如果我在我的PHP代码末尾添加unlink($target_path);
它
即使在显示图像后它被删除,它也不会显示图像...
所以问题是,如何在同一时间显示图像并将其删除,以便我的服务器不会被用户图片填满?
答案 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']
)
答案 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的解决方案来传递实际的图像数据而不是链接,但更好的解决方案是将图像保留在服务器上并定期删除旧文件。