2013-10-30 207 views
0

我有一個PHP文件,將表單數據轉換爲CSV格式,然後它應該自動下載到用戶的本地下載文件夾。下載CSV文件到本地下載的文件夾

$time = time(); 
$filename = 'exceldownloads/myreport_'.$time.'.csv'; 
$file = fopen($filename,'w'); 
fputcsv($file,$rowexcel); 

上面的代碼工作正常,並將csv文件存儲在服務器中的指定文件夾中。但我的要求是將其下載到本地文件夾。我已經看到上述問題的許多解決方案,但只有當我們知道本地目標文件夾時它們才能工作。但是,我的要求是將其下載到最終用戶本地下載的文件夾(其下載位置Im不知道)。無論如何都要將其下載到最終用戶系統,而不必特別提及目標路徑。

+0

這就是我所做的......但沒有文件被下載到我的本地下載文件夾中。 $ filename ='myreport'.time()。'。csv'; $ f = fopen($ filename,'w'); fputcsv($ f,$ rowexcel); header('Content-type:application/csv'); header('Content-Disposition:attachment; filename =''。$ filename。'「'); readfile($ filename); – user1808995

回答

2

您可以將網頁的輸出導出爲附件,該附件將以用戶下載的形式顯示。您可以在向用戶輸出任何輸出之前通過輸出適當的標題來完成此操作。

下面是一個例子,創建一個下載一個名爲foo.csv一個CSV文件:

header("Content-type: text/csv"); 
header("Content-Disposition: attachment;Filename=foo.csv"); 

輸出頭,您只輸出文件的所有數據的頁面內容之後。

* 編輯:*這裏的工作片段,如要求:

header("Content-type: text/csv"); 
header("Content-Disposition: attachment;Filename=foo.csv"); 
echo implode(";", $rowexcel) . "\r\n"; // you should expand this accordingly 

另外,這裏是另一個片段中,根據您的代碼:

$filename = 'myreport'.time().'.csv'; 
$f = fopen($filename,'w'); 
fputcsv($f,$rowexcel); 
header('Content-type: application/csv'); 
header('Content-Disposition: attachment;filename="'.$filename.'"'); 
readfile($filename); 

如果你沒有得到任何下載,確保在header()調用之前不輸出任何內容。另外,請確保您的PHP文件開頭沒有任何UTF8 BOM字節,因爲這些可能會被誤解爲輸出

+0

您可以使用我的代碼來描述一下嗎..bcoz我多次看到這個解決方案,但由於我是新手程序員,所以無法應用它。我很感謝你的幫助 – user1808995

+0

準確地說,我應該通過什麼來代替foo.csv,$ filename或$ file ...還有,我應該在代碼中插入這兩行標題 – user1808995

+0

現在我明白了......我實際上是編寫代碼來將文件存儲在服務器中,然後嘗試將其移動到本地..如果我只放置您的代碼並刪除上面發佈的所有內容,它就可以工作。非常感謝。 – user1808995