Jak zmusić przeglądarke do pobrania pliku?

Na pewno nie raz się zdarzyło, że chcieliśmy aby użytkownik mógł pobrać plik video, obrazek, muzyke, flash bez przeglądania go, ponieważ nie które przeglądarki w takich wypadkach odpalają swoje programy. Z pomoca tutaj przyjdą nam nagłówki wysyłane przez serwer http.

Nagłówki HTTP

Wysyłanie są one podczas żądania strony przez przeglądarke oraz w odpowiedzi serwera. Służą one do przekazywania typu danych jakie obsługuje do przeglądarka, kodowania oraz innych parametrów. Dziś zajmiemy się "magicznym" nagłówkiem Content-disposition. Za przykład posłuży nam obrazek png.

Content-disposition

Nagłówek ten przekazany z serwera mówi przeglądarce w jaki sposób ma się zachować podczas odbierania pliku. Domyślnie jest to otwarcie ale możemy to zmienić. Wystarczy przed plikiem ustawić jego wartość na attachment; filename=nazwa_pliku

Przykład

<?php
header
('Content-disposition: attachment; filename=obrazek.png');
header('Content-type: image/png');
readfile('obrazek.png');
?>

Pierwszy nagłówek określa nam, że plik jest go pobrania i jego nazwa to obrazek.png. Jako nazwe pliku możemy wpisac dowolną, taką dostanie użytkownik. Drugi nagłówek to okreslenie typu pliku. Jest on konieczny, ponieważ przeglądarki bardzo żadko korzystają z rozszerzeń plików, bo jest to rzecz, którą łatwo zmienić i nie koniecnzie musi ona określać prawdziwy typ. Ostatnia funkcja powoduje załadowanie zawartości pliku do pamięci i wysłanie jej do użytkownika.
Znaki na końcu będa tylko dodatkowym balastem, który może spsuć pliki binarne.

Musimy pamiętać żeby przed powyższym kodem i za nim nie było żadnych znaków, ponieważ jak będzie na poczatku to dostaniemy ostrzeżenie, że nagłówek nie może być wysłany.
Warning: Cannot modify header information - headers already sent by (output started at /www/obrazek.php:1) in /www/obrazek.php on line 3 i dokument będzie miał typ 'text/plain'.

Odpalamy w przeglądarce nasz przykład ścieżką http://localhost/obrazek.php . Nie musi on posiadać rozszerzenia png, ponieważ jak pisałem nazwa pliku zostanie zasugerowana pierwszym nagłówkiem, a typ jego drugim. W odpowiedzi otworzy nam się okienko pobrania pliku.

Your rating: Brak Ocena: 5 (3 votes)

Dodaj nową odpowiedź

Zawartość pola nie będzie udostępniana publicznie.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Znaki końca linii i akapitu dodawane są automatycznie.
  • You can use the <go> tags just like the <a> for nicer urls.

Więcej informacji na temat formatowania