2008-12-29 9 views
10

Jak zmusić serwer Apache 2 do wymuszenia przeglądarki, aby otworzyła okno dialogowe przesyłania plików, jeśli adres URL wskazuje na plik z rozszerzeniem .pln lub .psa?Jak zmusić serwer Apache 2 do wymuszenia przeglądarki, aby otworzyło okno dialogowe przesyłania plików?

Mam prosty serwer LAMP z CentOS 5, Apache 2, MYSQL 5, PHP 5, niedawno zbudowane instalacyjne płyty CD CentOS 5.2 i386. Moja aplikacja internetowa generuje pliki do pobrania i importowania do niestandardowej aplikacji. Rozszerzenia plików to .psa i .pln. Jak sprawić, aby mój serwer wymuszał na przeglądarce otwieranie okna dialogowego przesyłania plików? Jeśli wskażę przeglądarce plik .psa lub .pln na serwerze Apache 2, zawartość pliku zostanie wyświetlona w wyskakującym okienku jako zwykły tekst. Chcę dialogu przesyłania plików.

Aplikacja internetowa, nad którą pracuję, jest wdrażana na innym serwerze WWW i obsługuje pliki .pln i .psa według potrzeb. Nie mogę porównać plików konfiguracyjnych serwera, ponieważ nie mam dostępu administratora do działającego serwera.

Jak zmienić zachowanie mojego serwera? Czy wymaga to zmian kodu w kodzie mojej aplikacji internetowej (np. Wysyłanie jawnych nagłówków)? Jeśli tak, dlaczego działa na innym serwerze? Czy można uniknąć zmian w kodzie, konfigurując domyślne zachowanie serwera?

Każda pomoc zostanie doceniona.

Odpowiedz

6

Powinieneś być w stanie użyć dyrektywy FilesMatch, aby dodać niezbędny nagłówek.

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

Dodałem powyższe linie do mojego pliku /etc/httpd/conf/httpd.conf i zrestartowałem usługę httpd (próbowałem także z pln zamiast z pinem). Pliki .psa i .pln są nadal wyświetlane jako tekst w mojej przeglądarce. –

+1

Niestety, błędnie przeczytałem rozszerzenie. Składnia RegEx będzie "\. (? I: pln) | (? I: pies) $" Czy próbowałeś umieścić go w pliku .htaccess. Ponadto można dodać wiersz: Nagłówek ContentType applicaiton/octent tuż przed inną linią nagłówka. – palehorse

+2

Dzięki. Dodanie następującego do mojego pliku /etc/httpd/conf/httpd.conf rozwiązało problem. aplikacja ForceType/nieznany Header set Content-Disposition attachment musiałem wyczyścić (IE7) tymczasowe pliki internetowe My przeglądarki, aby zmiany odniosły skutek. –

0

Zmuszanie przeglądarkę zrobić coś zawsze jest trudne propozycją, ponieważ przeglądarka może cię ignorują i robić to, co do cholery to lubi :)

Powiedział, że większość przeglądarek poprosi użytkownika o okno dialogowe "zapisz jako", jeśli nagłówek "Content-type" jest ustawiony na "application/octet-stream". Napisz prostą paczkę cgi, która wyświetli żądany plik z odpowiednim nagłówkiem, lub skrzypacz z mime-modułem Apache2 (spójrz w katalogu konfiguracyjnym).

Mam nadzieję, że to pomoże, szczęśliwe hackowanie (i szczęśliwe święta, Nowy Rok lub co można świętować)

Misha

0

Ahh, nie wiedział o tym nagłówka palehorse, że prawdopodobnie jest to lepszy sposób, ponieważ pozwala zachować oryginalny typ MIME, będą musieli pamiętać, że jeden.

+0

Możesz również ustawić rodzaj zawartości za pomocą tej metody, jeśli chcesz wymusić aplikację/oktet. Wystarczy dodać nagłówek ContentType applicaiton/octet. To sprawia, że ​​jest trochę bardziej niezawodny. Robienie tego w conf lub .htaccess jest miłe, unikając skryptu do pobierania plików. – palehorse

0

Próbowałem kilku zmian konfiguracji, które nie miały żadnego widocznego efektu.

  1. I dodaje następujący wiersz do mojego pliku /etc/httpd/conf/httpd.conf:

AddType aplikacja/oktet strumienia .pln .psa

ja ponownie uruchomić serwer Apache i nie miało to żadnego wpływu.

  1. I dodaje się następujące wiersze do mojego pliku /etc/httpd/conf/httpd.conf: aplikacja ForceType/oktet strumień Header set Content-Disposition attachment Aplikacja ForceType/strumień oktetowy Zestaw nagłówków Załącznik zawartości do dyspozycji Uruchomiłem ponownie serwer Apache i nie przyniosło to żadnego efektu.
+0

Czy wypróbowałeś składnię FilesMatch? – palehorse

+0

Tak. Zobacz moje komentarze powyżej. Dyrektywa FilesMatch rozwiązała mój problem. –

0

Jeśli masz Firefoxa (a jeśli nie, dlaczego nie?) Zainstaluj pasek narzędzi dewelopera Chris Pedericks i sprawdź, czy nagłówki są właściwie ustawione. Jeśli tak, może to być wina przeglądarki. Jak już powiedziałem, nie można mieć pewności, że dana przeglądarka "poprawnie" zinterpretuje nagłówki odpowiedzi. O jakiej przeglądarce i tak mówimy?

Jeśli nagłówki nie są ustawione prawidłowo, może być konieczne ponowne sprawdzenie pliku httpd.conf. Być może dodane dyrektywy nie znajdują się w odpowiedniej sekcji? (na przykład pod niewłaściwą dyrektywą <Location>)

Powiązane problemy