Stream alapú filefeltöltés
Sziasztok!
Egy olyan kérdésem lene, hogy van-e lehetőség PHP-ben az ideiglenes könyvtárban való tárolás helyett direkten lementeni egy feltöltött file-t. Magyarul az elküldött HTTP form file-t tartalmazó mezőjét szeretném úgy elkapni, hogy azonnal lehessen egy fwrite-al lementeni, a move_uploaded_file, illetve bárminemű másolgatás, áthelyezgetés elkerülése végett.
Nem böngészővel, hanem egy Delphi-s klienssel küldöm az adatokat a szerveroldalnak, ami ezidáig tökéletesen működik is, csak ha nagyobb fileokkal és nagyobb mennyiségben fog menni a dolog, akkor kételkedem ennek a megoldásnak a hatékonyságában.
Ha tudtok valami megoldást, akkor nagyon megköszönném, bár végső esetben írok egy Apache modult, ami megcsinálja.
Előre is köszi: Alex
■ Egy olyan kérdésem lene, hogy van-e lehetőség PHP-ben az ideiglenes könyvtárban való tárolás helyett direkten lementeni egy feltöltött file-t. Magyarul az elküldött HTTP form file-t tartalmazó mezőjét szeretném úgy elkapni, hogy azonnal lehessen egy fwrite-al lementeni, a move_uploaded_file, illetve bárminemű másolgatás, áthelyezgetés elkerülése végett.
Nem böngészővel, hanem egy Delphi-s klienssel küldöm az adatokat a szerveroldalnak, ami ezidáig tökéletesen működik is, csak ha nagyobb fileokkal és nagyobb mennyiségben fog menni a dolog, akkor kételkedem ennek a megoldásnak a hatékonyságában.
Ha tudtok valami megoldást, akkor nagyon megköszönném, bár végső esetben írok egy Apache modult, ami megcsinálja.
Előre is köszi: Alex
inod átírása
Nem lehet
Na, nem baj ... :-(
Üdv:Alex :-)
ftp
Miért kell feltétlenül http-n feltöltened a fileokat?
Autentikáció miatt
Üdv:Alex
és a modul?
Mármint megy, ha az apache modul telepítve van :)
Megoldva
De azóta megoldódott a probléma, mostmár bármilyen szerveren menni fog. Kikerültem a standard file-feltöltési mechanizmust. A feltöltéskor nem file-ként adom hozzá a feltöltendő file-t, hanem bekódolom base64-el stringgé és sima formfield-ként adom hozzá a form-hoz. Ezután POST és szerveroldalon meg is kapom gyönyörűen egy base64_decode($_POST[...]) hívással, amit már csak fwrite-al kinyomok a filerendszerbe. Ezzel meg is oldódott a dolog, mert nincs ideiglenes tárolás, hanem közvetlenül stringstream-ként kapom a file tartalmát, elkerülve a felesleges - ideiglenes helyen történő - duplikált adattárolást és az áthelyezés overhead-jét. Köszönöm mindenkinek a segítőkészséget!!
Üdv:Alex :-)
jó ötlet :)
A post_max_size php.ini (ha php van szerver oldalon) valamint az apache LimitRequestBody beállításra kell figyelni.
Egy kis pótlás
Minden jót a nektek:Alex :-)
(Fast)CGI
Pont kint van egy cikk a nyitólapon, az valószínűleg segítségedre lesz.
Örök hálám ...
Üdv:Alex :-)
CGI vagy Rewrite
Másik lehetőség, ha saját kliens van, hogy nem POST metódust használsz, hanem valami más fantázianevet pl ASDF. A szerveren egy RewriteRule átirányít a PHP szkriptedre, ami szintén standard inputon eléri a POST tartalmát (ehhez már nem kell CGI).
PHP 5.2 File upload hook
Üdv,
Felhő
Köszi mindenkinek
Üdv:Alex :-)