2014-12-01 81 views
0

,使用PHP,在后端部分,我产生了一些的CSV文件:制作创建CSV文件下载

$fp = fopen($filename, 'w'); 
foreach ($rows as $row) { 
    fputcsv($fp, $row, ';', '"'); 
} 
fclose($fp); 

然后,在前端来看,我创建一个链接到那些的CSV。问题是,当点击指向csv的链接时,该文件的内容会显示在我的浏览器中,而不是下载它。 首先,我尝试了目标属性

target="_blank" 

没有任何变化。 然后我在网上看到的,我可以用头功能

header('Content-Type: application/csv'); 
header('Content-Disposition: attachment; filename='.$filename); 
$fp = fopen($filename, 'w'); 
foreach ($rows as $row) { 
    fputcsv($fp, $row, ';', '"'); 
} 
fclose($fp); 

但是,这改变了,是当我点击,在后台生成CSV文件按钮,浏览器提出我的唯一的事情解决这个问题每次下载csv文件。但我想要的是在前端下载它。

任何解决方案?

非常感谢。

+0

当你做'fopen()'时,打开一个名为'php://输出'的文件 – 2014-12-01 19:22:34

+0

由于头文件功能 – user 2014-12-01 19:25:12

+0

仍然要求我下载文件后端请注意,csv文件的内容类型是'text/csv',而不是'application/csv' - [RFC4180](http://tools.ietf.org/html/rfc4180) – 2014-12-01 19:28:01

回答

0

把这个:

header('Content-Type: application/csv'); 
header('Content-Disposition: attachment; filename='.$filename); 

在呈现该文件的网页。

+0

对于每个csv链接? – user 2014-12-01 19:28:38

+0

我刚试过,加载完页面后,浏览器要求我下载文件,甚至点击链接!这不是我想要的! – user 2014-12-01 19:31:02

+0

每个csv链接都指向不同的脚本来生成csv文件吗?您只需将它放在生成csv的脚本上,以便在生成csv时将其发送出去。 – 2014-12-01 19:31:23