Rozdział 5. ♦ Przetwarzanie danych z przeglądarki 143
Plik wysiany do serwera za pomocą takiego formularza zostanie zapisany w katalogu służącym do przechowywania plików tymczasowych. Jednocześnie skrypt odbierający uzyska dostęp do globalnej tablicy $_FILES3, zawierającej dane niezbędne do jego dalszego przetworzenia. Jest to tablica asocjacyjna, w której plik identyfikowany jest przez nazwę pola input typu file. W przypadku formularza z listingu 5.7 nazwątąjest pliki. Pod tym indeksem znajduje się pięć innych, które pozwalają na odczytanie informacji o pliku. Są to:
♦ S_FILES[ 'pliki' ][ 'name' ] — oryginalna nazwa pliku (którą plik miał w komputerze użytkownika),
♦ $_FILES[ 'pliki' ]['type1 D —typmime pliku (o ile przeglądarka dostarczyła tę informację),
♦ $_FILES[ 'pliki' ]['size' ] —wielkość pliku w bajtach,
♦ $_FILES[' pl i kl' ] [ ’ tmpjiame' ] — nazwa tymczasowa, pod jaką plik został zapisany na serwerze,
♦ S_FILES[' pl i kl' ][' error' ] — status operacji, kod błędu.
Pole error zostało wprowadzone w PHP w wersji 4.2.0 i może przyjmować jedną z wartości:
♦ UPL0AD_ERR_0K — brak błędu, operacja zakończona sukcesem,
♦ UPLOAD_ERR_INI_SIZE — wielkość pliku przekracza wielkość maksymalną zdefiniowaną w pliku php.ini (zmienna upload_max_filesize),
♦ UPL0AD_ERR_F0RM_SIZE — wielkość pliku przekracza wielkość maksymalną zdefiniowaną w formularzu HTML,
♦ UPLOAD_ERR_PARTIAL — została odebrana jedynie część pliku,
♦ UPL0AD_ERR_N0_FILE — plik nie został pobrany.
Plik, który został wysłany do serwera i znajduje się w katalogu tymczasowym, powinien zostać przeniesiony do właściwej lokalizacji (np. katalogu, który przeznaczyliśmy do przechowywania tego typu danych) za pomocą funkcji move_upl oaded_fi 1 e. Ta funkcja, oprócz zmiany lokalizacji pliku, wykonuje dodatkowo sprawdzenie, czy na pewno jest to plik wysłany do serwera za pomocą metody HTTP_P0ST. Uzbrojeni w tę wiedzę możemy już napisać krótki skrypt, który odbierze plik wysłany z przygotowanego wcześniej formularza. Kod tego skryptu jest widoczny na listingu 5.8.
listing 5.8. Kod skryptu odbierającego wysłany z przeglądarki plik_
<html>
<title>Upload pliku</title> </head>
<body>
<?php
Suploaddir = ';
W wersjach PHP wcześniejszych niż 4.1.0 zamiast $_FILES należy użyć tablicy $HTTP_P0ST_F1LES.