我在获取导出文件以创建和下载cvs文件时遇到问题。使用下面的代码,这将导出数据,但它会在浏览器中打印输出,而不是创建实际的csv文件。我使用<a href="export.php" target="_blank">Export Details</a>
从另一个页面上的链接调用php,但它所做的只是在浏览器中显示数据,而不是创建csv文件。
这是我在文件export.php中的代码:
<?php
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
$data = array(
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
$fp = fopen('php://output', 'w');
foreach ( $data as $line ) {
$val = explode(",", $line);
fputcsv($fp, $val);
}
fclose($fp);
?>
有人能看到哪里出了问题吗?
发布于 2015-11-03 01:38:00
所以,在玩了一个下午之后,我终于找到了问题的症结所在。问题不在于代码,而在于我在本地运行的数据库。我正在使用Mamp在本地设置我的wordpress数据库,这就是问题所在。解决方案是输出缓冲,可以在http://hibbard.eu/php-headerlocation-not-working-in-mamp/中找到解决方案。感谢大家的帮助;-)
发布于 2015-11-02 22:48:21
CSV文件是每行都有逗号分隔值的文件,可能用字符串括起来。
我注意到的第一件事就是将单个值传递给fputcsv()。但是fputcsv()需要一个值数组(字段)作为第二个参数。所以你的爆炸是多余的-看看手册页面,
因为您只输出到STDOUT (浏览器),所以您可以简单地回显您的代码行:
<?php
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="sample.csv"');
$data = array(
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
foreach($data AS $line){
echo $line.PHP_EOL;
}
?>
https://stackoverflow.com/questions/33479760
复制相似问题