這樣做的正確方法如下:
添加「將AddType」行按如下方式.htaccess文件或在適當的地方你的主服務器配置文件(我不能說正是因爲我不知道什麼發行你的Apache上運行)
AddType application/octet-stream csv
然後使用以下PHP的片段傳送文件
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename=example.csv');
header('Pragma: no-cache');
readfile("name and path of CSV file you wish to send");
或者使用PHP來發送CSV的線,而不是使用的ReadFile從磁盤生成它。請確保你使用正確的行結束符太「\ n」在每行的結尾應該適用於Internet Explorer的目標,你可能需要做的工作「\ r \ n」
你也將要發送
header("Content-Length: xxxx");
上面的'xxxx'應該替換爲您的CSV內容的大小,如果您沒有提供內容長度,那麼服務器有可能不知道何時關閉連接併發出信號下載完成(實際上很少發生,但可能發生)
如果您在服務器上創建文件,獲取正確的長度非常簡單s發送前的磁盤。
header("Content-Length: " . filesize("path and file name of csv to send"));
在這一天雖然結束,這不是一個精確的科學,而你可以做很多事情,試圖迫使瀏覽器下載文件,如果用戶配置他們的瀏覽器完全做一些事情不同的是,無論你採取什麼措施,都會發生什麼。
如果你想找MIME類型添加到您的Apache的配置,以支持這樣的場景,那麼阿帕奇「將AddType」關鍵字是你需要查找的一個:
http://httpd.apache.org/docs/2.2/mod/mod_mime.html
如果你去使用AddType,您需要確保您的Apache服務器上也安裝了「mod_mime」,通常這是默認設置之一,所以默認情況下應該在那裏。
不應該是內容類型:text/csv?你能解釋一下哪些不起作用嗎? – Lashus
你能澄清一下「不起作用」的意思嗎?怎麼了? –
當我嘗試在瀏覽器中打開文件時,它說它找不到。 – Sean