2016-02-28 90 views
1

我的HTML:CSV下載

<h2>Download Example CSV - IN DEVELOPMENT (not working yet)</h2><br /> 
<form method="post" enctype="multipart/form-data"> 
<input type="submit" name="example-csv" value="Download Example" /> 
</form> 

我的PHP:

function array_to_csv_download($array, $filename = "example.csv", $delimiter=",") { 
    header('Content-Type: application/csv'); 
    header('Content-Disposition: attachment; filename="'.$filename.'";'); 

    // open the "output" stream 
    // see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq 
    $f = fopen('php://output', 'w'); 

    foreach ($array as $line) { 
     fputcsv($f, $line, $delimiter); 
    } 
    fclose($f); 
} 

if(isset($_POST['example-csv'])) { 
    $data = array (
       array('column_1', 'column_2', 'column_3'), 
       array('test 1', 'test 2', 'test 3',) 
    ); 
    array_to_csv_download($data); 
} 

會發生什麼:

當我點擊下載示例提交按鈕,它給了我一個文件example.csv。這個文件幾乎包含了當前頁面的所有代碼,包括所有JavaScript,HTML和其他任何發送給瀏覽器的代碼。

我可以按Ctrl + F找到我想要的混亂的實際數據。

我的問題:

爲什麼我讓所有的代碼的頁面,而不是僅僅簡單的CSV我在找?

資源用於獲取對我的觀點:

How to create and download a csv file from php script?

Calling a particular PHP function on form submit

最後說明:

我適應上面我的需要的資源,但似乎無法得到我正在尋找的東西。我希望這足夠詳細。如有需要,請要求澄清。

謝謝。

+0

您需要更改您的服務器代碼以不提供HTML。 – SLaks

+0

如果您使用表單調用同一頁面,那麼您的代碼在獲取到PHP代碼之前是否已經輸出了所有樣式表和HTML? – andrewsi

回答

0

的問題很簡單,你有FCLOSE然後將HTML代碼將文件數據後未送達後添加一個出口

0

我不知道你的文件是什麼結構,但是這是應該的

你的HTML文件:

<h2>Download Example CSV - IN DEVELOPMENT (not working yet)</h2><br /> 
<form method="post" action="ServeFile.php" enctype="multipart/form-data"> 
<input type="submit" name="example-csv" value="Download Example" /> 
</form> 

PHP文件ServerFile.php:它是文件你把PHP放在上面,只要確保沒有任何空格就可以了<?php and at the end.. (simply omit php closing tag ?>)

既然你要發送頭文件(頭文件(..))沒有輸出,即使是空格,也要發送befo重新發送頭文件,因此這個文件必須是一個單獨的PHP文件。