#php #csv
При нажатии на кнопку необходимо сформировать и загрузить файл с данными в формате csv.
Есть такая функция function getCsvFile(...)
Данные формируются и файл с данными сохраняется на сервере. Но мне необходимо, чтобы
его мог получить клиент через загрузку.
Подскажите, пожалуйста, что не так.
Заранее благодарен
$now = gmdate("D, d M Y H:i:s");
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
header("Last-Modified: {$now} GMT");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=test.csv");
header("Content-Transfer-Encoding: binary");
//$array = $this->getLinks(...);
$titles = array("id", "Test");
ob_start();
$df = fopen("test.csv", "w");
fputcsv($df, $titles, ';');
$data = array(
array(1,2),
array(1,2),
array(1,2),
array(1,3)
);
foreach ($data as $row) {
fputcsv($df, $row, ';');
}
fclose($df);
Ответы
Ответ 1
По идее Content-Type должен быть один. И в значении для csv надо указать text/csv header("Content-type: text/csv"); Пример - тут.Ответ 2
Разобрался. Возможно частично проблема была связана с заголовками, но также с запуском самой функции. У меня эта функция запускается через ajax, поэтому необходимо было при передаче значений дополнительно добавить success: function(data) { document.location.href="..."; }
Комментариев нет:
Отправить комментарий