Я пытаюсь загрузить 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;