2012-07-15 44 views
0

我有2個文件 - 1.csv and 2.csv。我可以通過已知的方法下載1.csv用PHP:用PHP下載服務器上的幾個文件的內容

$file = '1.csv'; 
header('Content-Description: File Transfer'); 
header('Content-Type: application/jpeg'); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: public'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($file)); 
ob_clean(); 
flush(); 
readfile($file); 

但我的目的是要在這兩個文件的下載的文件內容 - 1.csv2.csv。有沒有人有一些想法如何實現這一點? 預先感謝您。

+1

定義「兩個文件的內容」。你想將文件連接成一個更長的文件嗎?或者你想讓用戶獲得兩個不同的文件? – 2012-07-15 11:16:50

+0

在一個字符串中讀取兩個文件可能並輸出爲1-2.csv? – Gntem 2012-07-15 11:22:42

+0

這是正確的 - 將文件連接成一個較長的文件。 – 2012-07-17 07:59:28

回答

2

串聯如果我理解正確,你這個應該這樣做。

$file1 = '1.csv'; 
$file2 = '2.csv'; 
header('Content-Description: File Transfer'); 
header('Content-Type: text/comma-separated-values'); 
header('Content-Disposition: attachment; filename='.basename($file1, '.csv') . '-' . basename($file2, '.csv') . '.csv'); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: public'); 
header('Pragma: public'); 
header('Content-Length: ' . (filesize($file1) + filesize($file2))); 
ob_clean(); 
flush(); 
readfile($file1); 
readfile($file2); 

考慮使用多個文件的循環和心靈的Content-Type頭的CSV文件的變化。

+0

這不起作用..只下載第一個文件。你測試過了嗎? – Samson 2012-07-15 11:42:21

+0

是的,我做到了。你是否使用我例子中的內容長度計算? 根據第一個文件的內容,您可能必須在讀取文件之間放置額外的換行符(這也需要您將新行的大小添加到Content-Length標頭)。當它仍然只顯示第一個文件的內容時,也許你的第二個文件是空的? – 2012-07-15 14:26:41

+0

這很奇怪..它提示我下載一個文件,只包含第一個文件的數據。 – Samson 2012-07-15 14:30:54

1
$file1 = '1.csv'; 
$file2 = '2.csv'; 
header('Content-Description: File Transfer'); 
header('Content-Type: application/jpeg'); 
header('Content-Disposition: attachment; filename="1-2.csv"'); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: public'); 
header('Pragma: public'); 
header('Content-Length: ' . (filesize($file1)+filesize($file2))); 
ob_clean(); 
flush(); 
echo file_get_contents($file1).file_get_contents($file2); 

的下載2項文件內容

+0

謝謝你,radashk,你的解決方案也適用於我。 – 2012-07-17 08:01:01

相關問題