使用PHP

时间:2018-01-05 16:43:08

标签: php mysql csv header fopen

[发现解决方案]谢谢大家的回复。我将按钮更改为链接,现在它正在按预期工作。

我知道这个问题已经一遍又一遍地讨论过,我一整天都在阅读可能的解决方案,但没有一个能解决我的问题。 我需要创建一个脚本来从mysql数据创建一个csv并将该文件下载到默认的下载浏览器的文件夹中。 正如我之前所说,我已经尝试了所有可能的解决方案。 我在获取数据并将其放入csv时没有问题。我将从我在这里找到的一个解决方案中发布一个简单的例子。

<?php

    header("Content-Type: text/csv");
    header("Content-Disposition: attachment; filename=file.csv");

    function outputCSV($data) {
      $output = fopen("php://output", "w");
      foreach ($data as $row)
        fputcsv($output, $row);
      fclose($output);
    }

    outputCSV(array(
      array("name 1", "age 1", "city 1"),
      array("name 2", "age 2", "city 2"),
      array("name 3", "age 3", "city 3")
    ));

?>

如果我把文件名放在fopen中,比如fopen(“filename.csv”,“w”),它会将文件保存在服务器中。我需要下载文件。我相信问题出在标题中。我该怎么办?欢迎任何帮助。

我正在使用最新版本的xampp,php并在Chrome上试用。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码将文件保存在服务器中

fopen("filename.csv","w")

然后你可以通过两种方式编写代码来下载保存的文件

<强>第一

您可以阅读文件并使用标题传递给浏览器

header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="filename.csv"');
ob_clean();
readfile($filePath);
exit;

<强>第二

您可以重定向到文件路径,如

header("Location: ".SITE_URL."VALID_PATH/filename.csv"); 
exit;