2013-04-24 114 views
1

我试图通过浏览器下载一个CSV文件。该脚本部分工作,因为到目前为止我设法在屏幕上显示CSV,但下载没有开始。在php而不是下载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"); 

回答

1

我通常只是做:

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

// print CSV lines here 

exit(); 
+0

其实我也使用相同的方式工作,但知道正如我提到的,而不是提示下载,它只是简单地被显示在浏览器上。 另外我试过在所有的mazor浏览器上,想着,只是某个浏览器可能存在问题。 ASLO我加入这一行.htaccess文件:将AddType应用程序/八位字节流CSV – sidhesh 2013-04-24 09:38:19

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; 

如果我是你,我会首先对此进行简单的测试(除了所有缓冲区之外),首先看到您设法完成这项工作,然后才能在您的具体测试中进行测试 建立。

+0

:谢谢您的建议DannyB但我已经努力在其分割成单个模块,即明明白白,但所有的内容只是被显示在浏览器只。 – sidhesh 2013-04-24 09:45:06

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; 
相关问题