Intereting Posts
MySQL где предложение равно чему угодно (SELECT * WHERE col = ANY_VALUE) Вставка текста из textarea в базу данных MySQL без потери форматирования PHP SQL: как сохранить данные в несколько баз данных из одной формы html или как автоматически копировать данные из одной базы данных в другую базу данных Войти на сайт с помощью Gmail Извлечение последнего сегмента в URI SwiftMailer + Gmail – не удается отправить электронную почту Запросить пользователя для сохранения файла через вызов AJAX Вывести изображение в PHP Как написать CDATA с помощью SimpleXmlElement? Сгенерировать секретный код для сброса пароля Как удалить PHPSESSID на клиентских компьютерах Почему использование подготовленного оператора mysql более безопасно, чем использование общих функций эвакуации? Сделать правило htaccess применимо только к текущей папке PHP, передать параметры из командной строки в скрипт PHP Как создать новую страницу на сайте magento

Есть ли способ заставить пользователя загружать файл из ссылки href, а не открывать его в окне браузера?

В основном я написал сценарий, который генерирует XML-файл на основе ввода пользователем. После того, как файл сгенерирован, ссылка загрузки выглядит так:

<a href="path/to/file.xml">Download File</a> 

Но при нажатии на него открывается xml в браузере, я хочу, чтобы он начал загружаться, когда вместо него была нажата ссылка. Есть ли способ достичь этого?

Solutions Collecting From Web of "Есть ли способ заставить пользователя загружать файл из ссылки href, а не открывать его в окне браузера?"

Да, есть. Это требует указания некоторых заголовков. Точно как это работает, зависит от того, какой язык вы используете, но вот пример использования php, снятый с php.net:

 <?php // We'll be outputting a PDF header('Content-type: application/pdf'); // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="downloaded.pdf"'); // The PDF source is in original.pdf readfile('original.pdf'); ?> 

В основном, сначала мы говорим клиенту, какой тип файла мы отправляем, а затем мы говорим клиенту, что то, что мы отправляем, является вложением, а это имя, а не страница, отображаемая, а затем, наконец, мы печатаем / прочитайте файл на выходе.

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

Если вы используете Apache для своего веб-сервера и всегда хотите принудительно загрузить XML-файлы, есть более эффективный способ сделать то, что предложил @chigley. Просто добавьте следующее в файл .htaccess .

 <Files *.xml> ForceType application/xml Header set Content-Disposition attachment </Files> 

Что происходит, когда браузер видит ссылку не зависит от ссылки, а скорее от цели ссылки. Ваш веб-сервер должен отправить соответствующий заголовок: Content-Disposition: attachment;filename="file.xml" чтобы сообщить браузеру, что он должен предлагать сохранить файл вместо его отображения.

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

download.php:

 header('Content-Type: text/xml'); header('Content-Disposition: attachment; filename="file.xml"'); readfile('/path/to/file.xml'); 

HTML:

 <a href="download.php">Download</a>