【发布时间】:2011-04-22 23:24:00
【问题描述】:
我正在尝试在第一次显示后从服务器中删除图片 (.jpg)。 但该文件在显示之前已被删除 (unlink();)。我已经尝试过 sleep() 但这只会延迟加载,并且在显示之前删除所有文件。
【问题讨论】:
-
如果您发布相关代码,这很可能是一个简单的解决方法。如果没有看到您的代码,您可能不会得到任何(有用的)答案。
标签: php temporary-files unlink
我正在尝试在第一次显示后从服务器中删除图片 (.jpg)。 但该文件在显示之前已被删除 (unlink();)。我已经尝试过 sleep() 但这只会延迟加载,并且在显示之前删除所有文件。
【问题讨论】:
标签: php temporary-files unlink
您可以使用 mod_rewrite 将 jpg 请求重定向到将图像加载到内存中的脚本,删除文件,然后提供图像。 IMO,这是最简单和最简单的解决方案。下面的不安全示例...
.htaccess 文件示例:
# Turn on URL rewriting
RewriteEngine On
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
index.php
<?php
$image_file = $_SERVER['PATH_INFO'];
// clean data, strip current/parent directory to block transversal, etc...
if (file_exists('images/' . $image_file))
{
$image_data = file_get_contents('images/' . $image_file);
// determine image mimetype using phps mimetype functions
unlink('images/' . $image_file);
header('Content-Type: image/jpeg');
echo $image_data;
}
【讨论】:
.htaccess 似乎与问题/答案完全无关?
恐怕我能做到的就是含糊不清了。
【讨论】:
这是因为所有 PHP 在渲染输出之前都在堆栈中执行。您需要设置一个函数来标记文件以在下一页加载时删除。
或者您可以设置一些 AJAX 以在文档加载后删除图片。
【讨论】: