Вопрос

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

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

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

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

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

Есть какие-нибудь идеи, как я могу достичь того или иного?

Спасибо,

Это было полезно?

Решение

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

// например, чтобы принудительно загрузить 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");

Другие советы

У вас нет власти над пользовательскими настройками, такими как, какой тип файла открывается каким приложением.Им пришлось бы зайти в свои настройки и изменить ассоциацию файлов.Однако имейте в виду, что не у всех установлен Excel, поэтому не стоит заставлять пользователя открывать CSV-файл в этом конкретном приложении.

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

Я считаю, что это на уровне операционной системы и не может быть изменено.

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

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

  • Убедитесь, что вы не выполняли никаких других выходных данных до этого момента
  • Создайте свою 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;

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top