проблема с загрузкой CSV-файла через HTTP-заголовок - PullRequest
1 голос
/ 19 мая 2011

попытался это сделать:

header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo $fields;

попытался также и многие другие.

header("Content-type: text/csv");

Что бы ни случилось, данные MySQL просто выводятся в браузер.

это HTTPheaderResponse, который я схватил с помощью firebug:

Date    Wed, 18 May 2011 14:15:18 GMT
X-Powered-By    PHP/5.1.6
Content-disposition attachment;filename=MyVerySpecial.csv
Connection  close
Content-Length  992
Server  Apache/2.2.3 (Red Hat)

РЕДАКТИРОВАТЬ: обратите внимание, что это возврат из JQuery .post () Я пытаюсь это, если это влияет на него.

Итак, кто-нибудь знает, почему эта проблема может возникать?Я в растерянности.

спасибо

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

Прежде всего, убедитесь, что для второго параметра header() установлено значение true, чтобы принудительно установить заголовок:

header('Content-Type: text/csv');

Дайте вам знать размер загрузки, вы должны:

header('Content-Length: '.strlen($fields));

Наконец, убедитесь, что $fields на самом деле является строкой в ​​формате CSV.

Вы не можете печатать массив напрямую и ожидать, что браузер автоматически конвертирует его в CSV.

1 голос
/ 19 мая 2011

Правильный тип MIME - text/csv.Попробуйте это.

0 голосов
/ 19 мая 2011

Попробуйте пометить Content-type как application/download или application/force-download.Это должно заставить браузер открыть диалог сохранения.

...