I'm attempting to allow the user to download a file, and it is working perfectly in Firefox. My problem becomes that in Chrome, it doesn't seem to accept the file name that I give in the header, it simply ignores it and creates something of its own, and I'm noticing that its sending double headers, which are identical.
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
The file that's generated from the above is Filename_3_from_2014_02_11_11_25_19_Custom.csv-, attachment
which is distinctly different than what the header is telling it to get.
The code that sends the headers is below:
// 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));
Am I missing a header that Chrome demands, or do I need to subtly alter one of these headers to make it work as expected? I've tried application/force-download, application/vnd.ms-excel as its a CSV intended for Excel use, but none of them seem to work.
I tried things from this question: HTTP Headers for File Downloads but nothing seemed to work.