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