[ Pobierz całość w formacie PDF ]
.Noe wszystkie aplikacje używają plików, ale aby efektywnie korzystać z różnych typówstrumieni danych, na przykład gniazd i potoków, należy poznać sposoby korzystania z uchwytów plików i funkcjioperujących na plikach.Rozdział ten zawiera nie tylko opis podstawowych operacji na plikach i systemie plików,ale również przedstawia dodatkową klasę ułatwiającą operacje na plikach.Opis operacji na plikach zawarty wtym rozdziale oraz opis formularzy zamieszczony w rozdziale poprzednim stanowią odpowiednią podstawę donastępnego rozdziału, Wysyłanie plików przez formularz.PHP Kompendium wiedzy61Rozdział 5.Wysyłanie plików przezformularzWstępPoprzednie dwa rozdziały omawiały niezbędne podstawy dla tego rozdziału, ponieważ wysyłanie plikówwymaga poznania zarówno formularzy HTML, jak i funkcji systemu plików.Obsługa przesyłania plików w PHPjest bardzo łatwa.PHP posiada wbudowany mechanizm pozwalający na odebranie pliku wysłanego z przeglądarkizgodnej z RFC 1867.Większość nowoczesnych przeglądarek jest zgodnych z tym dokumentem, ponieważ zostałon włączony do standardu HTML 3.2.Jeżeli pozwolisz użytkownikom na wysyłanie plików za pomocą formularza, musisz rozważyćdopuszczalne typy plików oraz ich wielkości.Mechanizm wbudowany w PHP działa świetnie dla małych plików,ale jeżeli masz zamiar przesyłać duże pliki należy się zastanowić nad zastosowaniem innego mechanizmu, aprzykład anonimowego FTP.Możesz również pomyśleć o stworzeniu dodatkowego mechanizmu przesyłaniaplików, jeżeli są one niezbędne do działania aplikacji.Wysyłanie pojedynczego plikuFormularz przy pomocy którego można przesyłać pliki różni się kilkoma szczegółami od zwykłegoformularza HTML.Znacznik musi posiadać atrybut ENCTYPE ustawiony na multipart/form-data zamiastdomyślnego application/x-www-form-urlencoded.Musisz również umieścić na formularzy znacznik typufile.Wydruk 5.1.zawiera prosty formularz HTML zawierający jeden znacznik.Wydruk 5.1.Formularz HTML ze znacznikiemFormularz do przesyłania plikówWyślij plik:Po wysłaniu danych formularza z wydruku 5.1, PHP tworzy automatycznie cztery zmienne globalne, któreopisują przesłany plik:" $thefile Zmienna zawiera nazwę pliku tymczasowego w którym znajduje się plik przesłany na serwer." $thefile_name Zmienna ta zawiera nazwę pliku na komputerze z którego został wysłany." $thefile_size Zmienna zawiera wielkość przesłanego pliku w bajtach." $thefile_type Zmienna ta zawiera typ MIME przesyłanego pliku (o ile przeglądarka udostępnia takąinformację).Nazwy tych zmiennych są tworzone w oparciu o nazwę znacznika w formularzu, tak jak jest topokazane na Wydruku 5.1.Pisząc skrypt obsługujący przesyłanie pliku należy pamiętać, że PHP automatycznieusuwa plik tymczasowy po zakończeniu skryptu, więc jeżeli nie skopujesz go, plik zostanie stracony.Skrypt na wydruku 5.2 zawiera kod obsługi przesyłania pliku poprzez formularz z Wydruku 1 i jeżeli plikjest rysunkiem (w formacie GIF lub JPEG) mniejszym od 100 kB, jest on wyświetlany.Jeżeli przesłany plik niema właściwego typu lub jest większy, wyświetlany jest komunikat błędu.Wydruk 5.2.Obsługa przesyłania plikuW przykładzie zamieszczonym na wydruku 5.2.nie wzięto pod uwagę, że nie wszystkie przeglądarkiwysyłają typu MIME pliku.Opuszczono również inne zagadnienia kontroli błędów, na przykład kontrolępoprawności wykonania funkcji copy.Jednak przykład ten miał za zadanie pokazanie jak łatwo można obsłużyćza pomocą PHP operacje przesyłania pliku.W przykładzie tym na początku sprawdzane jest, czy został wybrany plik do przesyłania.Jeżeli nie zostałwybrany plik, zmienna $thefile_name jest pusta.Następnie sprawdzane jest, czy plik ma odpowiednią wielkość ityp MIME.Jeżeli obie wartości zostaną zaakceptowane, przy pomocy wyrażenia dirname($PATH_TRANSLATED)odczytywany jest bieżący katalog na serwerze WWW.Funkcja dirname() zwraca nazwę katalogu z podanejścieżki
[ Pobierz całość w formacie PDF ]