我想将一个数组放入一个csv文件中,并在一个href链接中回显它,该文件,当我按下该链接时下载它。我怎么能这样做?
我有这段代码:
header('Content-Type: application/excel');
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);
如果我使用它,它会直接下载一个包含我的数组的csv文件。我怎样才能将它放入href链接?感谢。
答案 0 :(得分:1)
您可以使用GET参数来决定是否像现在一样生成文件内容,或者使用指向同一页面的链接生成HTML,但使用其他GET参数。
如下所示:
if (isset($_GET('download')) {
// your original code:
header('Content-Type: application/excel');
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);
} else {
// get current page URL and append the download parameter
$href = $_SERVER['PHP_SELF'] . "?download=1";
// output the HTML hyperlink, which will lead to the above `if` code
?>
<a href="<?=$href?>">download CSV</a>
<?php
}
?>
上面的代码假定您的“非下载”请求没有任何URL参数,否则您需要使用&符号添加 download 参数。如果您在URL中使用哈希字符,则还应管理哈希字符。