принудительная загрузка файла с помощью php

Я знаю, как сделать загрузку, когда загрузка происходит, она добавляет html с веб-страницы, которая вызывает загрузку. Как отфильтровать HTML?

Я понимаю, что вы пытаетесь вывести некоторый поток для загрузки с PHP-страницы?

Если это так, то не выводите этот контент со страницы, содержащей HTML, а перенаправляйте на отдельную страницу php, которая выводит только поток загрузки, при необходимости с заголовками.

Если я правильно вас понимаю, это общая проблема. Я решил это, используя ob_start в начале моего index.php (start / root / entry file) до появления ANY, и для загрузки я делаю следующее:

ob_end_clean(); header("Content-Type: application/octet-stream; "); header("Content-Transfer-Encoding: binary"); header("Content-Length: ". filesize("thefileinquestion").";"); header("Content-disposition: attachment; filename=thefileinquestion"); $fp = fopen(thefileinquestion, "r"); while(!feof($fp)){ $buffer = fread($fp, 1024); echo $buffer; flush(); } fclose($fp); die(); 

Обновить

Команда ob_start буферизует любой выход (например, через echo, printf) и предотвращает передачу пользователю какого-либо пользователя перед вашей фактической загрузкой. ob_end_clean чем останавливает это поведение, и снова дает прямой выход. НТН.

Убедитесь, что вы не выводите дополнительные данные после завершения потока файлов. Используйте вызов для выхода () для завершения выполнения страницы после завершения потока файлов. Любые символы после закрывающего тега??> (Например, новая строка) могут также вызвать проблемы с загрузкой.

Перемещение сценария загрузки в собственный файл должно облегчить поиск проблем, потому что это делает только одно. Чтобы избежать вывода каких-либо окончательных новых строк, в этом случае вы также можете опустить тег закрытия??>, А также в конце вашего скрипта.