1

我正在尝试通过浏览器下载 CSV 文件。该脚本部分工作,因为到目前为止我设法在屏幕上显示 CSV,但下载没有开始。

这是我到目前为止所尝试的:

if(isset($currency)) {
    header("Content-Type: application/csv");
    header("Content-Disposition: attachment;Filename=Pricelogs.csv");
    ob_clean();
    $filename = "/tmp/".uniqid().".csv";
    exportCSVFile($filename, $currency, $country, $provider);
    readfile($filename);
    //unlink("'".$filename."'");
} else {
    echo "ERR_USERNAME_PASSWORD";
    exit();
}

我已经从常见问题解答中阅读了所有此类问题并尝试过,但它只能在浏览器上打开,而不是下载。
我还使用了带单引号的标题。我也试过 header("Content-Type: text/csv"); 了:

    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private",false); // required for certain browsers 
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=\"".$filename."\";" );
    header("Content-Transfer-Encoding: binary");
4

4 回答 4

1

我通常只是这样做:

header('Content-type: text/csv');
header("Content-Disposition: attachment; filename=my_csv_filename.csv");

// print CSV lines here

exit();
于 2013-04-24T09:35:37.783 回答
1

输入您的 CSV 文件 URL,它将显示在浏览器中,而不是强制浏览器下载。您可以在您网站的 iframe 中打开它。

http://docs.google.com/viewer?embedded=true&url=www.yoursite.com/filename.csv

于 2013-04-24T10:41:02.280 回答
0

我可以告诉你这个组合对我有用:

$bom = chr(0xEF) . chr(0xBB) . chr(0xBF);
header("Content-type: application/csv; charset=UTF-8");
header("Content-Disposition: attachment; filename=$filename.csv");
header("Pragma: no-cache");
header("Expires: 0");
print $bom . $data;
exit;

如果我是你,我会首先简单地测试这个(在你所有的缓冲之外),首先看看你是否设法使这个工作,然后才在你的特定设置中测试它。

于 2013-04-24T09:40:00.377 回答
0

你可以试试这个。

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename.csv\";" );

print $content;
于 2013-04-24T10:10:41.053 回答