我的HTML:
<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 :(得分:0)
问题只是你必须在 fclose 之后添加退出或 die ,然后html代码将不会在文件的数据。
答案 1 :(得分: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 ?> )
之前没有空格
由于您正在发送标题(标题(..)),因此在发送标题之前不应发送任何输出,甚至是空格,因此该文件必须是单独的PHP文件。