Могу ли я сделать что-то вроде этого?
ob_start(); header("Content-Type: application/msword"); header("Content-Disposition: attachment; filename=".$title); header("Content-Length: ".$size); header("Content-Transfer-Encoding: binary"); readfile($path); ob_end_flush();
В настоящее время я получаю правильно названный файл для загрузки, но содержимое файла представляет собой вывод html из php, который содержит указанный выше код.
Я проверил правильный путь $. Будет ли плохой размер, чтобы это произошло? Я также попытался ob_flush () непосредственно после ob_start ().
EDIT: Текущий код ниже:
if (file_exists($path)){ ob_start(); header("Content-Type: application/msword"); header("Content-Disposition: attachment; filename=".$title); header("Content-Length: ".filesize($path)); header("Content-Transfer-Encoding: binary"); readfile($path); ob_end_flush(); die(); } else die ("Not Found");
Выше кода приводит к той же проблеме. Файл загружается, именован правильно, по-видимому, существует и с правильным размером, но содержимое файла является html-выходом страницы.
заранее спасибо
Я просто заметил, что это в самом конце файла, который загружает (неправильно): «int (14) content»
Но я не знаю, как это сделать в моем коде.
Возможно, некоторая отладка может помочь:
if (file_exists($path)) { ob_start(); header("Content-Type: application/msword"); header("Content-Disposition: attachment; filename=".$title); header("Content-Length: ".filesize($path)); header("Content-Transfer-Encoding: binary"); readfile($path); ob_end_flush(); die(); // To not send the HTML afterwards } else die("Not found");