我正在尝试在第一次显示后从服务器中删除图片 (.jpg)。但该文件在显示之前已被删除 (unlink();)。我已经尝试过 sleep() 但这只会延迟加载,并且在显示之前删除所有文件。
问问题
7034 次
3 回答
6
您可以使用 mod_rewrite 将 jpg 请求重定向到将图像加载到内存中的脚本,删除文件,然后提供图像。IMO,这是最简单和最简单的解决方案。下面的不安全示例...
.htaccess 文件示例:
# Turn on URL rewriting
RewriteEngine On
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
索引.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;
}
于 2011-04-22T23:58:41.720 回答
2
- 将文件中的图像内容复制到内存中;
- 删除图像文件;
- 将原始内容从内存流式传输到输出。
恐怕我能做到的就是含糊不清了。
于 2011-04-23T01:03:38.957 回答
0
这是因为所有 PHP 在渲染输出之前都在堆栈中执行。您将需要设置一个函数来标记文件以在下一页加载时删除。
或者您可以设置一些 AJAX 以在文档加载后删除图片。
于 2011-04-22T23:48:37.283 回答