2011-04-22 98 views
5

我想在第一次显示后从服务器删除图片(.jpg)。 但显示之前文件被删除(unlink();)。我已经尝试过使用sleep(),但这只会延迟加载,并且在显示之前所有文件都被删除。PHP ::如何读取后从服务器上删除文件。取消链接()之前执行

+1

如果您发布了您的相关代码,这很可能是一个简单的修复。没有看到你的代码,你可能不会得到任何(有用的)答案。 – 2011-04-22 23:35:10

回答

0

这是因为所有PHP都在渲染输出之前在堆栈中执行。您需要设置一个函数来标记文件以在下一页加载时删除。

或者你可以设置一些AJAX删除图片在文件加载后。

+0

输出呈现_during_ PHP执行。这就是PHP脚本所做的。 – 2011-04-23 04:04:27

6

您可以使用mod_rewrite将jpg请求重定向到将图像加载到内存中的脚本,删除该文件,然后提供图像。国际海事组织,这是最简单和最简单的解决方案。下面不安全示例...

例.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; 
} 
+1

我不相信OP会在首次查看后删除_all_ JPG图像。另外,你的'.htaccess'似乎与问题/答案完全无关? – 2011-04-23 04:05:34

+0

@Tomalak,我假设OP想要一次性视图图像脚本。上面的代码只是一个例子,他需要修改它以反映正确的图像路径,添加mimetype检测等。它使用htaccess实质上通过php脚本代理请求。该脚本返回图像并删除它(某些图像主机具有单视图,如果您想与单人共享图像,并且不希望它成为互联网上的永久性固定装置,则该图像有用)。 – 2011-04-25 14:22:39

+1

也许答案应该包括,作为一个警告,在他回来之前抱怨我们删除了他所有的照片:) – 2011-04-25 23:08:35

2
  • 复制从文件到存储器中的图像内容;
  • 删除图像文件;
  • 从存储器输出原始内容。

我可以做的最好的模糊,恐怕。

相关问题