PUT metódusú feltöltések

A PHP támogatja a HTTP PUT metódust is, amit például a Netscape Composer és a W3C Amaya használ. A PUT kérések sokkal egyszerűbbek, mint a file feltöltések. A következőképpen néznek ki:

  1 
  2 PUT /eleresi/ut/filenev.html HTTP/1.1
  3     

Ez hagyományosan azt jelenti, hogy a kliens a küldött adatokat az /eleresi/ut/filenev.html file-ba szeretné elmenteni a webgyökér alatt. Az nyilvánvalóan nem lenne jó megoldás az Apache vagy a PHP részéről, ha bárkinek megengedné, hogy felülírja a file-okat a web könyvtáradban. Éppen ezért a PUT kérések kezeléséhez be kell állítani a webszerver számára, hogy egy PHP scriptnek küldje az ilyen bemenetet. Apache alatt ezt a Script direktívával teheted meg. Ez elhelyezhető szinte tetszőleges ponton az Apache konfigurációs file-odban. Egy gyakori hely erre egy <Directory> blokk belseje, vagy esetleg egy <Virtualhost> blokk belseje. Például egy ilyen sor megoldja a feladatot:

  1 
  2 Script PUT /put.php3
  3     

Ez beállítja az Apache számára a PUT kérések kezelésére a put.php3-at abban a környezetben, ahol ezt a sort elhelyezted a konfiguráláskor. Ez természetesen feltételezi, hogy a .php3 kiterjesztést a PHP kezeli és a PHP aktív.

A put.php3 file-ban aztán valami hasonlót tehetsz:

  1 
  2 
  3 <? copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>
  4 
  5     

Ez a kérés által meghatározott helyre másolja a küldött file-t. Valós helyzetben természetesen szükséges valamilyen ellenőrzés, és/vagy felhasználóazonosítás, mielőtt esetleg felülírod egyik fontos file-odat. A PHP a POST metódushoz hasonlóan egy ideiglenes file-ban tárolja a feltöltött file-t. Amikor a kérés teljesítése befejeződött, ez az ideiglenes file törlődik. Ez azt jelenti, hogy a PUT kéréseket feldolgozó scriptednek ezt a file-t el kell mozgatnia máshova, ha meg szeretnéd tartani a feltöltött file-t. Az ideiglenesen létrehozott file elérési útját a file nevével a $PHP_PUT_FILENAME váltózó tartalmazza, és a javasolt célt a $REQUEST_URI változó tartalmazza (bár ez lehet más is nem Apache szervereken). Ez a cél az, mit a kliens meghatározott. Neked nem kell feltétlenül ezt a helyet elfogadnod, lehet, hogy neked az a kényelmesebb (és biztonságosabb), hogy a feltöltött file-okat egy speciális upload könyvtárban tárolod.