在PHP而不是下载csv文件它在浏览器中打开

时间:2013-04-24 09:27:35

标签: php download force-download

我正在尝试通过浏览器下载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();
}

我已经从FAQ& amp;中读过所有这类问题。也试过但它只在浏览器上打开,而不是下载 我还使用带单引号的标题。 我也试过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 个答案:

答案 0 :(得分:1)

我通常只是这样做:

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

// print CSV lines here

exit();

答案 1 :(得分:1)

将您的CSV文件URL,它将显示在浏览器中代替强制浏览器下载。您可以在自己网站的iframe中打开它。

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

答案 2 :(得分: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;

如果我是你,我会首先明确地测试(在你所有的缓冲之外),首先看到你设法做到这一点,然后才在你的特定设置中进行测试。

答案 3 :(得分: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;