2012-05-21 1 views
0

Вот код, который извлекает файл (скажем .doc) с сервера, сохраняет его во временной папке и затем использует api (скажем, google viewer) для его отображения, а затем удаляет его.Как восстановить -> Просмотр -> Удалить файл в PHP?

<?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 скрипт выполняет сам первый, а затем повторить это буфер, зритель Google не может найти файл, так как его уже удален. Использование flush() тоже не помогает.

Одна работа заключается в том, чтобы удалить команду «unlink» и создать cron-задание для удаления всех файлов в папке temp (скажем, через каждые 2 минуты). Есть ли лучший способ сделать это?

ответ

1

я хотел бы сделать ссылку на

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>"; 

затем сделать viewthis.php поток файл ... Затем, как только он служил, вы можете удалить его.

+0

Я пробовал это, но не работал. Я изменил ссылку, где viewthis.php: $ name = $ _GET ['name']; $ data = file_get_contents ('temp /'.$ name); header ('Content-Type: application/msword'); echo $ data; –

+0

Проблема заключается в удалении файла. Если я удалю его в том же скрипте, который повторяет просмотрщик google, он никогда не будет работать. Я прав?? –

+0

Он должен передать его зрителю, а затем удалить ... пример в http://uk.php.net/readfile покажет вам, как ... если вы сделаете это, он отправит контент в браузер, а на укажите, что вы отсоединяете его. – Brian

0

Я предполагаю (смотря на комментарий в строке 2), что вы пытаетесь просмотреть вложения электронной почты. Что вы можете сделать, так это динамически создать файл url для google для поиска файла. Что вы делаете, так это создать сценарий, например «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; 

Для любого другого файла, просто измените заголовок типа содержимого.

 Смежные вопросы

  • Нет связанных вопросов^_^