окно загрузки php - файла
-
08-07-2019 - |
Вопрос
Я даю пользователю ссылку для загрузки 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;