18. Fejezet. Filefeltöltés kezelése

Tartalom
POST metódusú feltöltések
Tipikus csapdák
Több file egyidejű feltöltése
PUT metódusú feltöltések

POST metódusú feltöltések

A PHP alkalmas file feltöltést fogadni bármilyen RFC-1867 kompatibilis böngészőtől (mint a Netscape Navigator 3 vagy későbbi és a Microsoft Internet Explorer 3 Microsoft javítással, vagy későbbi IE javítás nélkül). Ez a szolgáltatás egyaránt lehetővé teszi a látogatónak szöveges és bináris file-ok feltöltését. A PHP azonosítási és file-kezelési képességeivel teljes felügyeleted van afelett, hogy ki tölthet fel file-t, és mi történik a feltöltött file-okkal.

Érdemes megemlíteni, hogy a PHP támogatja a PUT metódust is, amit a Netscape Composer és a W3C Amaya kliensek használnak. Lásd a PUT metódusú feltöltések részt.

A file feltöltési lehetőség egy speciálisan kiképzett formmal biztosítható:

Példa 18-1. File Upload Form

  1 
  2 
  3 <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD="POST">
  4 <INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000">
  5 File elküldése: <INPUT NAME="userfile" TYPE="file">
  6 <INPUT TYPE="submit" VALUE="OK">
  7 </FORM>
  8 
  9     
Az _URL_ a feldolgozást végző PHP file-ra kell, hogy mutasson. A MAX_FILE_SIZE rejtett mező a file input mező előtt kell, hogy szerepeljen, és azt adja meg, hogy mekkora a maximális file méret (byte-okban megadva), amit a PHP fogad. A célfile-ban a következő változók kerülnek beállításra egy sikeres feltöltést követően:

Figyeld meg, hogy a "$userfile" előtag minden fenti változóban a form-ban megadott érték, amit a TYPE=file sornál megadott INPUT elem neveként határoztál meg. A fenti kérdőívben ezt "userfile"-nak választottuk.

A file-ok alapbeállításban a szerver szokásos ideiglenes könyvtárában (temp) tárolódnak. Ez megváltoztatható a TMPDIR környezeti változó átállításával. Ha a putenv() függvénnyel próbálod átállítani ezt az értéket, nem fogsz célhoz érni!

A PHP script, ami megkapja a feltöltött file-t, gondoskodik arról is, hogy a kívánt műveleteket elvégezze a file-al. Például törölheti a file-t, ha az túl nagy, vagy túl kicsi, figyelembe véve a $..._size változót, vagy meghatározhatja a $..._type alapján, hogy ez a file megfelel-e egy meghatározott file-típusnak, és ha nem, törölheti. Bármi is a cél a feltöltött file-al, a PHP script-nek kell gondoskodnia arról, hogy elmozgassa egy biztonságos helyre, vagy törölje az ideiglenes könyvtárból az adott file-t.

A file törlésre kerül az ideiglenes könyvtárból a kérés végrehajtásának végeztével, ha nem mozgatod el, vagy nem nevezed át.