есть ли стандартный способ сделать что-то подобное? Я просто хочу, чтобы скачать xml-файлы с сервера. Пожалуйста, помогите мне!
Нет, насколько я знаю, нет способа сделать это с помощью HTML.
Вы должны исправить это на целевой странице. Если отправляется определенный HTTP-заголовок, браузер будет предлагать загружаемую страницу вместо ее отображения. Это должно работать в каждом крупном браузере. Необходимым заголовком является Content-Type: octet-stream
. Как вы отправляете это зависит от вашей настройки.
Вы всегда можете отправить его, настроив свой веб-сервер, чтобы сделать это, но насколько он зависит от того, какой веб-сервер вы используете.
Если, с другой стороны, ваш XML-файл генерируется скриптом PHP, это легко. Просто добавьте следующую строку до того, как что-нибудь еще будет написано , поэтому желательно в верхней части указанного скрипта:
header('Content-Type: application/octet-stream');
Если это статический XML-файл … ну, вы можете сделать для него «прокси-файл». Добавьте файл PHP со следующим содержимым:
<?php header('Content-Type: application/octet-stream'); // This "fakes" the file name, so the downloaded file isn't called // "download_xml_file.php" or whatever you name the script. header('Content-Disposition: attachment; filename=my_xml_file.xml'); readfile('path_to_the_actual_xml_file.xml'); ?>
Но постарайтесь избежать этого взлома. Это лишний раздув, и он нарушит кеширование браузера.
navigator.msSaveBlob(blob, filename)
https://msdn.microsoft.com/sv-se/library/windows/apps/hh772331
К сожалению, я не знаю, как это сделать в Safari.
Здесь у вас есть таблица с браузерами и их совместимость с загрузкой атрибута, которую Майк написал вам в комментарии: http://caniuse.com/download
И фактический тег с атрибутом (просто для того, чтобы точно ввести его):
<a href="your_path_to_file" download>Download Me!</a>
– он будет работать только в firefox, chrome и opera, так как он находится в таблице.
Атрибут загрузки работает только в Firefox и Chrome. Он не будет работать с IE, сафари или Opera.