Как я могу отобразить вывод в веб-браузере и отправить файл для загрузки? - PullRequest
1 голос
/ 06 октября 2010

Я знаю, как отобразить вывод в веб-браузер (очевидно), и я также знаю, как отправить файл для загрузки клиенту, установив заголовки Content-Disposition и Content-Type, а затем отправив данные файла.Но я хочу сделать и то, и другое, аналогично тому, сколько страниц загрузки работает («загрузка вашего файла начнется мгновенно»).

Какая техника используется для этого?Я думал об использовании обновления META HTTP, но вот в чем дело ... Веб-страница на самом деле выполняет довольно сложную обработку, и я хочу показать результаты обработки пользователю и передать результаты в виде файла пользователюно выполнить обработку только один раз.Я хотел бы избежать обновления HTTP, если это возможно.Есть ли способ выполнить оба из них с помощью одного запроса страницы?Или мне придется записать файл на сервер, а затем отправить его на второй запрос страницы из запроса на обновление HTTP?

1 Ответ

0 голосов
/ 06 октября 2010

Используйте в выводе iframe со ссылкой на файл, который вы хотите загрузить.

Пример вывода:

<div>Foo</div>
<iframe width="0px" height="0px" src="path/to/file"></iframe>

Вы не можете сказать "эта часть, если для отображения, а эта для загрузки" с протоколом HTTP.

Однако вы можете «кэшировать» файл во временном каталоге, недоступном из публичного представления (вне корня документа), а затем выводить содержимое этого документа через PHP (например, file_get_contents или что-то еще). Затем эту временную папку можно очистить с помощью API, который может просто сканировать эту папку и удалить любой файл старше определенного времени (см. filemtime () )

Эта очистка может выполняться каждый раз, когда создается новый файл, поэтому размер папки остается на разумном уровне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...