这是一个从服务器检索文件(例如 .doc)的代码,将其存储在临时文件夹中,然后使用 api(例如 google 查看器)显示它,然后将其删除。
<?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 脚本首先执行自身,然后回显缓冲区,谷歌查看器无法找到该文件,因为它已经被删除。使用 flush() 也无济于事。
一种解决方法是删除“取消链接”命令并创建一个 cron-job 以删除临时文件夹中的所有文件(例如每 2 分钟后)。有更好的方法吗?