В зависимости от вашего сценария существует два разных подхода.
Если ваши файлы KML являются статическими, и вы обслуживаете их напрямую без PHP, тогда вы должны правильно настроить файл и убедиться, что ваш веб-сервер настроен на наблюдение за файлами .htaccess
.
Если ваши файлы KML являются динамическими или проксируются PHP-скриптом, вам необходимо подать правильные заголовки, чтобы принудительно загрузить. Заголовок для поощрения загрузки является Content-Disposition
:
header("Content-Disposition: attachment; filename=\"$filename\"");
В PHP любая header
директива должна быть подан перед любым другим контентом, включая любые пробелы.
Если вы обнаружили, что ваш сервер не настроен для наблюдения .htaccess
файлов и вы не сможете настроить его соответствующим образом, то простой прокси-скрипт, как это будет работать: - замена
<?php
header("Content-Disposition: attachment; filename=\"myData.kml\"");
include 'myData.kml';
?>
... соответствующее имя файла. Вы можете расширить его для работы с несколькими файлами KML с использованием переменных, но для обеспечения безопасности убедитесь, что ваш скрипт проверяет, что все запрошенные файлы действительны, а не просто слепо «включая» любой запрошенный файл.
Единственное, что вы можете сделать, это «предложить» к браузеру, что содержание ответа является «файл» и должен рассматриваться как таковой. (Имейте в виду, что HTTP не имеет понятия «файлы», только заголовки и контент.) Это делается путем установки заголовка 'content-disposition' в ответе: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields – David
И если вы используете php для принудительной загрузки файлов в каталог, вы можете взять php из картинки и просто на .htaccess http://stackoverflow.com/questions/3977159/set-content-disposition-header-to-attachment -only-on-files-in-a-an-director – Orangepill