简体   繁体   中英

Download a csv file using PHP

[Solution found] Thank you all for your replies. I changed the button to a link and it is now working as it should.

I know this subject has been discussed over and over, I've been reading possible solutions the whole day but none solves my problem. I need to make a script to create a csv from mysql data and download the file to the default downloads browser's folder. As I prior said I have tried every possible solution found. I don't have issues in getting the data and putting it in a csv. I will post a simple example from one solution I found here.

<?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")
    ));

?>

If I put the filename in fopen, like fopen("filename.csv","w") it saves the file in the server. I need to download the file. I believe the problem is in the header. What should I do? Any help is welcomed.

I am using latest versions of xampp, php and trying it on Chrome.

Thank you.

You can use below code to save file in server

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

Then you can write code to download saved file by two ways

First

You can read file and pass to browser with headers

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

Second

You can redirect to file path like

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM