Подтвердить что ты не робот

Как заставить сервер Apache 2 заставлять браузер открывать диалог передачи файлов?

Как заставить сервер 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 по желанию. Я не могу сравнивать файлы конфигурации сервера, потому что у меня нет доступа администратора к рабочему серверу.

Как изменить поведение моего сервера? Требуется ли изменение кода для моего кода веб-приложения (например, отправка явных заголовков)? Если да, то почему он работает против другого сервера? Можно ли избежать изменения кода при настройке поведения сервера по умолчанию?

Любая помощь будет оценена.

4b9b3361

Ответ 1

Вы должны иметь возможность использовать директиву FilesMatch, чтобы добавить необходимый заголовок.

<FilesMatch "\.(?i:pin)$">
  Header set Content-Disposition attachment
</FilesMatch>

Ответ 2

Принуждение браузера делать что-то всегда сложно, так как браузер может игнорировать вас и делать то, что ему нравится:)

Тем не менее, большинство браузеров предложит пользователю диалоговое окно "Сохранить как", если заголовок "Тип контента" установлен в "application/octet-stream". Либо напишите простую оболочку cgi, которая обслуживает запрошенный файл с правильным заголовком, либо скрипта с помощью mime-типов Apache2 (смотрите в каталоге config.)

Надеюсь, это поможет, счастливый взлом (и счастливое Рождество, Новый год или все, что вы можете отмечать)

Миша

Ответ 3

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

Ответ 4

Я попробовал несколько изменений конфигурации, которые не имели видимого эффекта.

  • Я добавил следующую строку в файл /etc/httpd/conf/httpd.conf:

Приложение AddType/октет-поток .pln.psa

Я перезапустил сервер Apache и не имел никакого эффекта.

  1. Я добавил следующие строки в файл /etc/httpd/conf/httpd.conf: Приложение ForceType/октет-поток Набор заголовков Content-Disposition Приложение ForceType/октет-поток Набор заголовков Content-Disposition Я перезапустил сервер Apache и не имел никакого эффекта.

Ответ 5

Если у вас есть Firefox (а если нет, почему бы и нет?), установите панель инструментов разработчика Chris Pedericks и проверьте правильность установки заголовков. Если это так, это может быть ошибка браузера. Как я уже сказал, вы не можете быть уверены, что любой браузер будет "правильно" интерпретировать заголовки ответов. О каком браузере мы говорим здесь?

Если заголовки не установлены правильно, вам может потребоваться повторная проверка вашего файла httpd.conf. Возможно, директивы, которые вы добавили, не в правильном разделе? (например, под неправильной директивой <Location> )