PHP kézikönyv
Előző | 38. Fejezet. Fájlfeltöltés kezelése | Következő

# PUT metódusú feltöltések

A PUT feltöltés támogatása a PHP 3 és a PHP 4 között megváltozott. PHP 4-ben a PUT-al küldött adatok a szabványos bemenetről olvasva gyűjthetőek be.

Példa 38-5. HTTP PUT által feltöltött állományok lementése PHP 4-ben
`<?php /* A PUT adatok a szabványos bemeneten érkeznek */ $putdata = fopen("php://stdin", "r"); /* Egy fájl nyitása írásra */ $fp = fopen("myputfile.ext", "w"); /* Egyszerre 1KB olvasása és fájlba írása */ while ($data = fread($putdata, 1024)) { fwrite($fp, $data); } /* Az adatfolyan és a fájl zárása */ fclose($fp); fclose($putdata); ?>`

> Megjegyzés: A további bekezdések csupán a PHP 3-ra vonatkoznak már.

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 az eddig tárgyalt feltöltések. A következőképpen néz ki:

    PUT /eleresi/ut/filenev.html HTTP/1.1

Ez hagyományosan azt jelenti, hogy a kliens a küldött adatokat az `/eleresi/ut/filenev.html` fájlba 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 fájlokat 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 szkriptnek 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 fájlodban. Egy gyakori hely erre egy <Directory> blokk belseje, vagy esetleg egy <Virtualhost> blokk belseje. Például egy ilyen sor megoldja a feladatot:

    Script PUT /put.php

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

A put.php fájlban aztán valami hasonlót tehetsz:

`<?php copy($PHP_UPLOADED_FILE_NAME, $DOCUMENT_ROOT . $REQUEST_URI); ?>`

Ez a kérés által meghatározott helyre másolja a küldött fájlt. 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 fájlodat. A PHP a POST metódushoz hasonlóan egy ideiglenes fájlban tárolja a feltöltött fájlt. Amikor a kérés teljesítése befejeződött, ez az ideiglenes fájl törlődik. Ez azt jelenti, hogy a PUT kéréseket feldolgozó szkriptednek ezt a fájlt el kell mozgatnia máshova, ha meg szeretnéd tartani a feltöltött fájlt. Az ideiglenesen létrehozott fájl elérési útját a fájl 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, amit 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 fájlokat egy speciális upload könyvtárban tárolod.

Előző | Tartalom | Következő
Több állomány egyidejű feltöltése | Fel | Távoli állományok kezelése