Заголовки HTTP для Chrome

Я пытаюсь разрешить пользователю загружать файл, и он отлично работает в Firefox. Моя проблема заключается в том, что в Chrome он, похоже, не принимает имя файла, которое я даю в заголовке, он просто игнорирует его и создает что-то свое, и я замечаю, что его отправляющие двойные заголовки идентичны.

HTTP/1.1 200 OK Date: Tue, 11 Feb 2014 16:25:19 GMT Server: Apache/#.#.## (Linux OS) X-Powered-By: PHP/#.#.## Cache-Control: private Pragma: public Content-Description: File Transfer Content-Disposition: attachment; filename="Filename_3_from_2014_02_11_11_25_19_Custom.csv" Content-Transfer-Encoding: binary Content-Length: 9 Cache-Control: private Pragma: public Content-Description: File Transfer Content-Disposition: attachment; filename="Filename_3_from_2014_02_11_11_25_19_Custom.csv" Content-Transfer-Encoding: binary X-ChromePhp-Data: <Stuff here> X-Debug-Token: 2f50fc Connection: close Content-Type: text/plain; charset=UTF-8 

Файл, созданный из вышеперечисленного, – это Filename_3_from_2014_02_11_11_25_19_Custom.csv-, attachment отличное от того, что заголовок сообщает ему.

Код, который отправляет заголовки, приведен ниже:

 // Generate response $response = new Response(); // Set headers $response->headers->set('Pragma', 'public'); $response->headers->set('Cache-Control', 'private', false); $response->headers->set('Content-Type', 'text/plain'); $response->headers->set('Content-Description', 'File Transfer'); $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '"'); $response->headers->set('Content-Type', 'text/plain'); $response->headers->set('Content-Transfer-Encoding', 'binary'); $response->headers->set('Content-Length', strlen($filedata)); 

Мне не хватает заголовка, который требуется Chrome, или мне нужно тонко изменить один из этих заголовков, чтобы он работал должным образом? Я пробовал приложение / force-download, application / vnd.ms-excel как свой CSV, предназначенный для использования в Excel, но ни один из них не работает.

Я пробовал вещи из этого вопроса: HTTP-заголовки для загрузки файлов, но ничего не работало.

После того, как вы столкнулись с этой проблемой, выясняется, что проблема заключалась в том, что я рано отправлял заголовки, а затем возвращал свой объект ответа. Из-за этого заголовки отправлялись дважды, и Firefox кажется совершенно удовлетворительным, но Chrome очень запутался и изменил имя файла, чтобы показать, что проблема возникла, но все же позволяет пользователю загружать файл.

В принципе, мне пришлось удалить строку, в которой говорилось $response->sendHeaders(); и просто вернуть объект, тем самым разрешив проблему с двойными заголовками, и имя файла не будет правильно форматироваться.

Пытаться

 <?php use Symfony\Component\HttpFoundation\Response; //... $file = '/path/of/your/file'; return new Response(file_get_contents($file), 200, array( 'Content-Disposition' => 'inline; filename="'.$file.'"' ));