146 PHP i MySQL dla każdego
146 PHP i MySQL dla każdego
Rysunek 5.6.
Okno dialogowe wyświetlane po wysłaniu nagłówków HTTP
Listing 5.9. Skrypt wysyłający plik do przeglądarki
<?php
$fi TePath =
$fileNameServer - "imagel.jpg":
SfileNameBrowser = "rysunekl.jpg":
$fd = fopen($filePath.$fileNameServer. *r"):
$size = filesize($filePath.$fneNaraeServer):
Scontents = fread($fd. $size);
fclose($fd):
header(''Content-Type: appl ication/octet-stream"): header("Content-Length: Ssize:");
headerCContent-Disposition: attachment; filename=$fneNameBrowser"):
echo Scontents;
?>
on skonstruowany w taki sposób, aby nazwa pliku znajdującego się na serwerze mogła być różna od nazwy wysyłanej do przeglądarki. Dzięki temu plik o nazwie imagel.jpg zostanie wysłany jako rysunekl.jpg.
Kod rozpoczyna się od deklaracji trzech zmiennych pomocniczych. Są to: filePath — przechowująca nazwę katalogu, w którym jest zapisany plik, fi 1 eNameServer — przechowująca nazwę pliku do wysłania oraz fileNameBrowser — zawierająca nazwę, pod jaką plik zostanie wysłany do przeglądarki. Po deklaracjach zmiennych jest wykonywana funkcja fopen otwierająca plik do wysłania w trybie do odczytu (r). Wynikiem działania tej funkcji jest deskryptor (czyli specjalny identyfikator), który jest przypisywany zmiennej fd (z ang .file descriptor). Następnie za pomocą funkcji filesieze jest pobierana, i przypisywana zmiennej size, wielkość pliku. Po pobraniu rozmiaru pliku, za pomocą fUnkcji fread, jest pobierana jego zawartość. Po wykonaniu wymienionych czynności do przeglądarki są wysyłane nagłówki HTTP zgodne z podanym wyżej opisem. Na zakończenie za pomocą instrukcji echo do przeglądarki wysyłana jest odczytana wcześniej zawartość pliku.