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.