【问题标题】:How to put array into CSV file and echo it out into an href?如何将数组放入 CSV 文件并将其回显到 href 中?
【发布时间】:2016-01-12 20:52:57
【问题描述】:

我想将一个数组放入一个 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链接中?谢谢。

【问题讨论】:

  • 您必须在 href 属性中添加指向该脚本的链接。你不能把文件的内容放在那里。
  • 我想放一个 href 链接来下载我的 csv 文件。
  • 那么是什么阻止了你?你应该知道脚本地址吧?
  • 这是我的问题。那个地址是什么?如果我使用我的代码,它将直接下载我的 csv 文件,因为我得到了第二个 header()。我怎样才能将 header() 放入
  • fopen(fileNameHere, 'w')

标签: php arrays file csv


【解决方案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 中使用哈希字符,您还应该管理它。

【讨论】:

    猜你喜欢
    • 2015-02-03
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2021-06-19
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多