#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="..."; }
Комментариев нет:
Отправить комментарий