У меня есть сторонний источник, откуда я получаю файл «CSV». Я написал это внутри цитаты, потому что там написано, что это CSV-файл, но в основном это не так.
Итак, я беру этот основной исходный файл, затем читаю и помещаю данные в CSV-файл «PROPER».
Чтение и запись в порядке, но проблема заключается в том, что при сохранении правильно цитируемые данные записываются в сам файл сценария. Например, если имя моего php-файла «fixcsv.php», я получаю загружаемый файл как «fixcsv». PHP».
Мой код
$headings = array('HID');
$handle = fopen("MonC1.csv", "r");
$data = fgetcsv($handle, 0, ";",'"');
$fh = fopen('php://output', 'w');
ob_start();
fputcsv($fh, $headings);
// Loop over the * to export
if (! empty($data)) {
foreach ($data as $item) {
// echo $item;
fputcsv($fh, array($item));
}
}
$string = ob_get_clean();
$filename = 'csv_' . date('Ymd') .'_' . date('His');
// Output CSV-specific headers
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\";" );
header("Content-Transfer-Encoding: binary");
exit($string);
Любая помощь высоко ценится. Заранее спасибо.
Ваш Content-Disposition
имеет точку с запятой в неправильном месте (согласно спецификации). Должно быть:
header("Content-Disposition: attachment; filename=\"$filename.csv\" );
Других решений пока нет …