Создание CSV-файла, не работает с правой кнопкой мыши сохранить как - PullRequest
0 голосов
/ 06 ноября 2008

У меня есть скрипт, который генерирует данные в формате csv, которые отправляются пользователю вместе с набором заголовков, которые сообщают браузеру, что это файл .csv. Все прекрасно работает, когда пользователи (слева) нажимают на ссылку на скрипт, им предоставляется диалог загрузки с именем файла, оканчивающимся на .csv, и он предлагает использовать excel или calc, чтобы открыть его. Однако, когда пользователи щелкают правой кнопкой мыши и выбирают «Сохранить как», они сохраняются с именем сценария php.

Вот код заголовка:

header("Pragma: public");
header("Expires: 0"); // set expiration time

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

$val = date("m_d_Y_g_i");
Header('Content-Disposition: attachment; filename="personal_information_'.$val.'.csv"'); 

Итак, еще раз, когда пользователь щелкает левой кнопкой мыши, он сохраняет файл как personal_information_date.csv; когда они щелкают правой кнопкой мыши, это сохраняет как download.php. Я использую FF3. Как ни странно, IE7 не имеет этой проблемы.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 06 ноября 2008

Используйте mod_rewrite для псевдонима файла из file.csv в file.php, это проблема браузера, а не PHP, потому что при сохранении файла он не запускается до сохранения.

Итак, подведем итог:

  1. Ссылка на personal_information_date.csv
  2. Создайте правило mod_rewrite, которое пересылает personal_information_date.csv в download.php (например, RewriteRule ^personal_information_date.csv$ download.php).
1 голос
/ 07 ноября 2008

HTTP-клиент может игнорировать более одного заголовка типа контента, два других будут игнорироваться - какой из них? Зависит от реализации браузера, поэтому различное поведение. Правильный тип MIME - это text / csv, а не application / octet-stream! Заголовок размещения содержимого является правильным для загрузки.

0 голосов
/ 06 ноября 2008
  • Я считаю, что установка трех разных типов MIME не помогает
  • что такое $ val? Предоставляется ли этот известный контент или пользователь - например, может ли он содержать неприятные символы (например, ") или даже переносы строк, например, вводить новые строки заголовка HTTP?
  • взгляните на HTTP-заголовки, которые приходят к клиенту. Либо встроенную информацию Firefox, либо используйте LiveHttpHeaders (плагин можно найти на сайте Mozilla - регистрирует все HTTP-заголовки) - я уверен, что есть еще / другие плагины для FF.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...