php - окно загрузки файла - PullRequest
       22

php - окно загрузки файла

1 голос
/ 28 октября 2009

Я даю пользователю ссылку для скачивания CSV-файла ... просто используя

Click <a href="report.csv">here</a> to download your file.

Этот текст и ссылка отображаются в небольшом всплывающем окне - высота 100, ширина 400.

Если пользователь нажимает «сохранить» - тогда нет проблем, тогда файл сохраняется там, где он выберет

Если, хотя они выбирают «открыть», CSV-файл отображается в небольшом всплывающем окне. Что не то, что я хочу - я бы предпочел, чтобы Excel открывал и отображал файл в Excel, или даже отключение кнопки «Открыть» может быть возможным вариантом.

Есть идеи, как мне этого достичь?

Спасибо

Ответы [ 5 ]

4 голосов
/ 28 октября 2009

Я предполагаю, что вы открываете это всплывающее окно, используя некоторый JavaScript ... поэтому я бы посоветовал не показывать / открывать ваше крошечное всплывающее окно "скачать" и вместо этого показывать эту ссылку на веб-странице. Поэтому, когда кто-то нажимает на ссылку, вынуждает браузер загрузить файл, и если он хочет открыть его, он может и, вероятно, получить представление, столь же широкое, как размер окна браузера.

// просто для принудительной загрузки zip-файла отправьте заголовки как

// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
1 голос
/ 28 октября 2009

Вы не можете управлять настройками пользователей, такими как тип файла, который открывает приложение. Им придется перейти к своим настройкам и изменить сопоставление файлов. Однако имейте в виду, что не у всех установлен Excel, поэтому не стоит заставлять пользователя открывать файл csv в этом конкретном приложении.

Я также не думаю, что вы можете отключить опцию Open, это также диктуется конфигурацией веб-браузера, будет ли он отображать окно или нет, или он запустит соответствующее приложение напрямую и т. Д. Не повезло в вашем конкретном случае.

0 голосов
/ 28 октября 2009

Одно половинное решение добавляет target="_blank" к тегу. Таким образом, когда пользователи выбирают параметр «Открыть», по крайней мере, файл будет открыт в новом (полноэкранном или по крайней мере изменяемого размера) окне.

Кроме этого, вы не можете изменить поведение окна, как сказал ceejayoz.

0 голосов
/ 28 октября 2009
  • Убедитесь, что вы не делаете никаких других выходных данных до этой точки
  • Создайте строку csv и сохраните ее в $ csvString
  • Дайте ему соответствующее имя файла в $ csv_filename
  • Заголовки должны указать браузеру загрузить его в excel

    header("Cache-Control: maxage=1");

    header("Pragma: public");

    header("Content-Type: application/vnd.ms-excel");

    header("Expires: 0");

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    header("content-disposition: attachment;filename=$csv_filename");

    echo $csvString;

0 голосов
/ 28 октября 2009

Я считаю, что это уровень ОС и его нельзя изменить.

...