В php Вместо загрузки файла csv он открывается в браузере

Я пытаюсь загрузить 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 и также попытался, но он открывается только в браузере, а не при загрузке.
Я также использовал заголовок с одинарными кавычками. Я также попробовал 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"); 

Поместите URL-адрес вашего CSV-файла, он будет отображаться в браузере вместо загружаемого браузера силы. Вы можете открыть его в iframe на своем сайте.

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

Обычно я просто делаю:

 header('Content-type: text/csv'); header("Content-Disposition: attachment; filename=my_csv_filename.csv"); // print CSV lines here exit(); 

Я могу сказать, что эта комбинация работает на меня:

 $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; 

Если бы я был вами, я бы сначала испытал это просто (за пределами всей вашей буферизации), сначала убедитесь, что вам удастся выполнить эту работу, и только затем проверьте ее в своей конкретной настройке.

Вы можете попробовать это.

 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;