Я пытаюсь отправить файл из модели Kohana в браузер, но как только я добавляю заголовок Content-Length, файл не начинает загружаться сразу.
Теперь проблема в том, что Kohana уже выводит буферы. Ob_clean в начале скрипта не помогает, хотя. Также добавление ob_get_length () к Content-Length не помогает, так как это просто возвращает 0.
Функция getFileSize () возвращает правильное число: если я запускаю скрипт за пределами Kohana, он работает.
Я читал, что exit () по-прежнему вызывает все деструкторы, и, возможно, что-то после этого выводится Kohana, но я не могу выяснить, что именно.
Надеюсь, кто-нибудь может помочь мне здесь ...
Это фрагмент кода, который я использую:
public function download() {
header("Expires: ".gmdate("D, d M Y H:i:s",time()+(3600*7))." GMT\n");
header("Content-Type: ".$this->getFileType()."\n");
header("Content-Transfer-Encoding: binary\n");
header("Last-Modified: " . gmdate("D, d M Y H:i:s",$this->getCreateTime()) . " GMT\n");
header("Content-Length: ".($this->getFileSize()+ob_get_length()).";\n");
header('Content-Disposition: attachment; filename="'.basename($this->getFileName())."\"\n\n");
ob_end_flush();
readfile($this->getFilePath());
exit();
}