我想把一个数组放入一个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链接?谢谢
您可以使用GET参数来决定是像现在这样生成文件内容,还是使用附加的GET参数生成带有同一页面链接的HTML。
类似以下内容:
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中使用散列字符,您还应该管理该散列字符。