PHP 5.3.3: скачать файл с сервера и продолжить выполнение скрипта - PullRequest
0 голосов
/ 02 ноября 2018

Я использую этот бит кода для загрузки файла (path_facture_name) с сервера в браузер клиента:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($path_facture_name) . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Content-Length: ' . filesize($path_facture_name));
ob_clean();
flush();
readfile($path_facture_name);
ob_end_flush();
# ----
# Some other PHP code
# ----

Это прекрасно работает, но когда файл загружен, сценарий заканчивается, и часть Some other PHP code никогда не будет выполнена.

Итак, мой вопрос: есть ли лучший способ загрузить файл с сервера, который не прерывает выполнение следующей части кода?

Я пытался использовать код <iframe> или JavaScript для перенаправления window в файл sipparate .php, который будет обрабатывать загрузку. Но это не сработало, потому что эта функция, которую я хочу добавить, является частью 18-летнего комплекса php CRM, который я не могу легко / свободно редактировать.

Я ищу PHP решение или руководство.

1 Ответ

0 голосов
/ 09 января 2019

Ответ на этот вопрос: @ ADyson Комментарий выше:

« " и перезагрузите текущую страницу php "... вы не можете сделать это, только браузер может сделать это в этой ситуации. Вы уже дали свой ответ на запрос в виде файла загрузки. Единственный способ «перезагрузить текущую страницу» с сервера - отправить новый HTML-код для отображения в браузере. Но вы не можете ответить на один HTTP-запрос с помощью загрузки файла и HTML-документа. Это физически невозможно. Вы уже установили заголовки, указывающие браузеру, что ответ является файлом для загрузки. »

Так что это ограничение HTTP. Мы не можем сделать ответ из нескольких частей.

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