PHP - upload pliku
| DZIAŁANIE: | brak działania |
Kod:

Ewentualne Objaśnienia:
Często przydaje się coś takiego jak formularz do uploadowania plików na nasz serwer. Chcielibyśmy również mieć nad tym kontrolę - tutaj w sensie takim, aby pliki były zapisywane do odpowiednich folderów/folderu. Aby generalnie cały upload był możliwy nasz serwer musi mieć włączoną opcje file_uploads - sprawdzacie oczywiście poprzez phpinfo() - tam też zmienna upload_tmp_dir powinna wskazywać na katalog gdzie pliki będą tymczasowo zapisywane podczas wysyłania (pobieranie przez serwer) a zmienna upload_max_filesize - określa max rozmiar pliku.
Wiadomo jak działamy - jeżeli nic nie wysyłaliśmy jeszcze ( tutaj u mnie
sprawdzamy to poprzez ukryte pole formularza ) - pojawia się nam formularz -
oczywiście z elementem typu file, metoda przesyłania to POST. Istotne jest aby w
tagu <FORM> zamieścić parametr :
enctype="multipart/form-data" - określa typ
kodowania MIME .
Po wysłaniu pliku - zostanie on zapisany w katalogu, który właśnie służy do
przechowywania plików tymczasowych. Jednocześnie nasz skrypt uzyskuje dostęp do
globalnej tablicy $_FILES - zawiera ona dane niezbędne do dalszego
działania. W tablicy tej plik jest identyfikowany przez nazwę pola input typu
file - czyli w moim przykładzie jak widać nazywa się ona 'pliczek'.
I tak oto elementy tej tablicy :
- $_FILES['pliczek']['name'] - oryginalna nazwa pliku ( jaką miał na komputerze
użytkownika)
- $_FILES['pliczek']['type'] - typ MIME pliku ( o ile przeglądarka dostarczyła
tą informacje)
- $_FILES['pliczek']['size'] - wielkość pliku w bajtach
- $_FILES['pliczek']['tmp_name'] - tymczasowa nazwa pod jaką serwer zapisał
uploadowany plik
- $_FILES['pliczek']['error'] - kod błędu
Pole $_FILES['pliczek']['error'] może przyjmować wartości :
- UPLOAD_ERR_OK - nie ma błędy, operacja przebiegła pomyślnie
- UPLOAD_ERR_INI_SIZE - wielkość pliku przekroczyła wielkość max ( zmienna
upload_max_filesize )
- UPLOAD_ERR_FORM_SIZE - wielkość pliku przekroczyła wielkość max określoną w
formularzu HTML
- UPLOAD_ERR_PARTIAL - została odebrana przez serwer jedynie część pliku
- UPLOAD_ERR_NO_FILE - nie został pobrany plik
Do przeniesienia pliku z lokalizacji tymczasowej do właściwego ( określonego przez nas ) folderu służy nam funkcja move_uploaded_file - poza zmianą lokalizacji pliku dodatkowo sprawdza czy na pewno nasz plik został wysłany do serwera metodą HTTP_POST.
To koniec teorii - jeśli ją zrozumiałeś - bez problemu możesz interpretować przedstawiony skrypt.