5

我正在尝试在第一次显示后从服务器中删除图片 (.jpg)。但该文件在显示之前已被删除 (unlink();)。我已经尝试过 sleep() 但这只会延迟加载,并且在显示之前删除所有文件。

4

3 回答 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 回答