如何在 PHP 中检索 -> 视图 -> 删除文件


How do I Retrieve -> View -> Delete File in PHP?

这是一个代码,它从服务器检索文件(比如.doc(,将其存储在临时文件夹中,然后使用api(比如谷歌查看器(显示它,然后删除它。

<?php 
$body = "....."; //data from imap server
$name = "abc.doc";
$file = fopen("temp/" . $name,'w'); 
fwrite($file,$body); 
fclose($file); 
$url = rawurlencode("http://www.xxx.com/temp/".$name); 
// I do not have a direct url to the file on the imap server, thus have to store it in a temporary folder
echo "<iframe src='"http://docs.google.com/viewer?url={$url}&embedded=true'" width='"100%'" height='"100%'" style='"border: none;'"></iframe>";
unlink("temp/".$name);
?>

现在的问题是,由于 php 脚本首先执行自身,然后 echo 的缓冲区,因此 google 查看器找不到该文件,因为它已经被删除。使用 flush(( 也无济于事。

一种解决方法是删除"取消链接"命令并创建一个 cron-job 以删除临时文件夹中的所有文件(例如每 2 分钟一次(。有没有更好的方法?

我会链接到

echo "<iframe src='"http://docs.google.com/viewer?url="http://www.domain.com/viewthis.php?name=abc.doc&embedded=true'" width='"100%'" height='"100%'" style='"border: none;'"></iframe>";

然后制作视图.php流式传输文件...然后,一旦送达,您就可以将其删除。

我假设(查看第 2 行中的注释(您正在尝试查看邮件附件。您可以做的是动态创建一个文件网址,供谷歌查找文件。你要做的是创建一个脚本,比如"view_file.php",它加载/下载文件并将文件推回去,并带有一些自定义标头来告诉"浏览器"(google(它是哪种类型的文件。这样,您就不必保存文件。缺点是文件将始终可以从外部访问,因此您仍然应该设置计时器或类似的东西。

对于图像,您可以执行以下操作:

$im = file_get_contents('http://www.site.com/url_to_your_image'); // or any other function to retrieve the image data itself
header('content-type: image/gif'); 
echo $im; 

对于任何其他文件,只需更改内容类型标头。