我試圖讓用戶下載一個文件,並且它在Firefox中完美運行。我的問題變成了,在Chrome中,它似乎不接受我在標題中給出的文件名,它只是忽略它並創建它自己的東西,而且我注意到它發送的雙重標題相同。適用於Chrome的HTTP頭
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));
我缺少一個標頭,鍍鉻的需求,或者我需要巧妙地改變這些標題之一,使其按預期工作?我已經嘗試過應用程序/強制下載,應用程序/ vnd.ms-excel作爲其用於Excel使用的CSV,但它們都不起作用。
我試過這個問題的事情:HTTP Headers for File Downloads但似乎沒有任何工作。
我真的愛你,只是花了幾個小時試圖調試爲什麼重複的頭文件被返回。我的 - > before()事件正在調用return $ response-> send()而不是僅僅返回$ response;再次感謝! –
我想知道爲什麼: $ response-> headers-> set('Access-Control-Allow-Origin','*'); $ response-> sendHeaders(); 給我:「Access-Control-Allow-Origin'標頭包含多個'*,*'值,但只允許有一個值。」在Chrome中。感謝您爲我解決這個問題! – Fx32