Не запрашивается загрузка CSV-файла

Я создал пользовательское решение в WordPress, которое будет генерировать CSV-файл, который будет загружен, нажав на просто гиперссылку, связанную непосредственно с этим файлом. Вместо запроса на загрузку файла на компьютер; вместо этого CSV открывается в окне браузера.

FWIW Я на Media Temple с помощью ванильной установки WordPress.

Отправить правильный тип mime

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

И используйте заголовок Content-Disposition, чтобы сказать ему, чтобы скачать его: http://www.jtricks.com/bits/content_disposition.html

 header('Content-Disposition: attachment; filename="mycssfile.csv"'); 

Вы всегда хотите отправить соответствующий тип mime, иначе брандмауэры, антивирусное программное обеспечение и некоторые браузеры могут иметь проблемы с ним …

Вы можете использовать функцию header() PHP для изменения типа содержимого

 header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="myFile.csv"'); 

Вышеприведенный код заставит пользователя запросить загрузку. где myFile.csv следует заменить на путь к файлу, который вы хотите загрузить.

Это работает:

 $filename = 'export.csv'; header('Content-type: application/csv'); header('Content-Disposition: attachment; filename='.$filename); 

Кроме того, мне лично не нравятся ссылки на моих сайтах, мне нравятся кнопки. Если вы хотите, чтобы кнопка выполняла функцию экспорта, вы можете использовать код ниже. Я просто подумал, что я опубликую его, потому что мне потребовалось немного разобраться в первый раз 🙂

 <input type="button" value="Export to CSV" onClick="window.location.href='something.php?action=your_action';"/> 

Вам необходимо отправить браузер в MIME-тип application/csv чтобы он отключил ответственность за обработку файла независимо от того, что рекомендует ОС (или пользователь выбирает).

В PHP (до отправки любого результата клиенту):

 header('Content-type: application/csv');