Ответ 1
Вы должны иметь возможность использовать директиву FilesMatch, чтобы добавить необходимый заголовок.
<FilesMatch "\.(?i:pin)$">
Header set Content-Disposition attachment
</FilesMatch>
Как заставить сервер Apache 2 заставить браузер открывать диалог передачи файлов, если URL-адрес указывает на файл с расширением .pln или .psa?
У меня есть простой LAMP-сервер с CentOS 5, Apache 2, MYSQL 5, PHP 5, недавно созданный компакт-диск CentOS 5.2 i386. Мое веб-приложение создает файлы для загрузки и импорта в пользовательское приложение. Расширения файлов:.psa и .pln. Как заставить мой сервер заставлять браузер открывать диалог передачи файлов? Если я укажу свой браузер на файл .psa или .pln на сервере Apache 2, содержимое файла будет отображаться во всплывающем окне как простой текст. Мне нужен диалог передачи файлов.
Веб-приложение, над которым я работаю, развертывается на другом веб-сервере и обрабатывает файлы .pln и .psa по желанию. Я не могу сравнивать файлы конфигурации сервера, потому что у меня нет доступа администратора к рабочему серверу.
Как изменить поведение моего сервера? Требуется ли изменение кода для моего кода веб-приложения (например, отправка явных заголовков)? Если да, то почему он работает против другого сервера? Можно ли избежать изменения кода при настройке поведения сервера по умолчанию?
Любая помощь будет оценена.
Вы должны иметь возможность использовать директиву FilesMatch, чтобы добавить необходимый заголовок.
<FilesMatch "\.(?i:pin)$">
Header set Content-Disposition attachment
</FilesMatch>
Принуждение браузера делать что-то всегда сложно, так как браузер может игнорировать вас и делать то, что ему нравится:)
Тем не менее, большинство браузеров предложит пользователю диалоговое окно "Сохранить как", если заголовок "Тип контента" установлен в "application/octet-stream". Либо напишите простую оболочку cgi, которая обслуживает запрошенный файл с правильным заголовком, либо скрипта с помощью mime-типов Apache2 (смотрите в каталоге config.)
Надеюсь, это поможет, счастливый взлом (и счастливое Рождество, Новый год или все, что вы можете отмечать)
Миша
Ahh, не знал об этом заголовочном файле, что, вероятно, лучший способ, так как он позволяет сохранить исходный тип MIME, нужно будет запомнить этот.
Я попробовал несколько изменений конфигурации, которые не имели видимого эффекта.
Приложение AddType/октет-поток .pln.psa
Я перезапустил сервер Apache и не имел никакого эффекта.
Если у вас есть Firefox (а если нет, почему бы и нет?), установите панель инструментов разработчика Chris Pedericks и проверьте правильность установки заголовков. Если это так, это может быть ошибка браузера. Как я уже сказал, вы не можете быть уверены, что любой браузер будет "правильно" интерпретировать заголовки ответов. О каком браузере мы говорим здесь?
Если заголовки не установлены правильно, вам может потребоваться повторная проверка вашего файла httpd.conf. Возможно, директивы, которые вы добавили, не в правильном разделе? (например, под неправильной директивой <Location> )