Я делаю контроллер "Загрузка" с помощью Symfony 2, который имеет единственную цель - отправлять заголовки, чтобы я мог принудительно загрузить файл .csv, но он работает неправильно.
$response = new Response();
$response->headers->set('Content-Type', "text/csv");
$response->headers->set('Content-Disposition', 'attachment; filename="'.$fileName.'"');
$response->headers->set('Pragma', "no-cache");
$response->headers->set('Expires', "0");
$response->headers->set('Content-Transfer-Encoding', "binary");
$response->headers->set('Content-Length', filesize($fileName));
$response->prepare();
$response->sendHeaders();
$response->setContent(readfile($fileName));
$response->sendContent();
$fileName
является строкой "info.csv"
. Таковы мои действия внутри моего контроллера, нет возврата. Когда я попытался вернуть объект Response
, содержимое файла было отображено в браузере, а не мой предполагаемый результат.
Проблема, которую я обнаружил, заключается в том, что на некоторых страницах я получаю свой info.csv file
, но в других случаях я получаю сообщение:
No webpage was found for the web address: http://mywebpage.com/download
Error 6 (net::ERR_FILE_NOT_FOUND): The file or directory could not be found.
Я полностью уверен, что файл существует, поэтому должно быть другое дело. Кроме того, routing.yml работает правильно, так как я получаю файл с других страниц, которые также ссылаются на этот путь. Журнал ошибок Apache ничего не сообщает об этом.
Кто-нибудь принудительно загрузил файл .csv на Symfony 2 раньше? Если да, то что я делаю неправильно?