ugrás a tartalomhoz

Mappa tartalmának másolása PHP-vel

Kribali · 2010. Aug. 10. (K), 10.15
Sziasztok !

Van egy tételem, amire sehol nem találtam megoldást, hátha itt valaki tudna segíteni.
A felhasználó által kiválasztott MAPPA TARTALMÁT kell átmásolni egy másik, szintén felhasználó által megadott helyre.
Nem tudom, PHP-ban megvalósítható-e egyáltalán.
Köszönöm előre is a segítséget !
 
1

Szerver oldalon

Poetro · 2010. Aug. 10. (K), 10.56
Szerver oldalon mindenfajta komolyabb probléma nélkül megoldható, hogy a felhasználó a szerveren megjelöl egy mappát, és szintén a szerveren meghatároz egy célt, akkor egyszerűen át lehet másolni a fájlokat. Persze érdemes korlátozni, hogy mely fájlokhoz / mappákhoz férhessen hozzá a felhasználó, különben esetleg a szerver működését, vagy helyes üzemelését korlátozhatja.

Amennyiben a klien a saját gépén szeretne fájlokat másolni, azt vagy kliens oldali PHP-val lehet megoldani - a felhasználó a saját gépén futtatja a PHP-t, nem a böngészőjében. Amennyiben ez nem kivitelezhető, akkor lehetséges még aláírt Java applet is, aminek a felhasználó jogot ad, hogy hozzáférjen helyi fájlokhoz. Ezen kívül ha mégis mindenképpen böngészőben akarja csinálni, akkor esetleg lehet írni böngésző plugin-t, ami szintén hozzá tud férni a kliens fájljaihoz, mappáihoz.
2

Megvalósítható

janoszen · 2010. Aug. 10. (K), 10.58
Természetesen megvalósítható, de nem biztos, hogy hatékony, ugyanis nincs egy parancs rá. A parancssoros másoló eszközök ezt megoldják helyetted, de PHP-ban Neked kell megírnod a rekurziót hozzá. Ezekre a parancsokra lesz szükséged:

3

google?

ironwill · 2010. Aug. 10. (K), 10.59
http://www.google.hu/#hl=hu&source=hp&q=php+directory+copy&aq=6&aqi=g1&aql=&oq=php+directory+cop&gs_rfai=&fp=c6f4443a36e2e1eb

http://www.visible-form.com/blog/copy-directory-in-php/
http://www.php.net/manual/en/function.copy.php#91010

Ezek szerint alap függvény nincs rá.
4

Copy

Poetro · 2010. Aug. 10. (K), 11.37
A copy függvény leírásának megjegyzéseiben találsz leírást azzal kapcsolatban, hogyan lehet könyvtárakat rekurzívan másolni.
5

nincs konkrétan meghatározva, nem kell program

Kribali · 2010. Aug. 11. (Sze), 06.47
Először is köszönöm a válaszokat.

Nincs a feladatban meghatározva, hogy kliens vagy szerver oldalon akarunk másolni.
Tehát az egyszerűbb megoldás érdekelne, gondolom a szerver oldali lesz az.
Mivel szóbeli a tétel, ezért megfelelne egy algoritmus is, amiből ki tudok már indulni. Nem kell a programot megcsinálnom.

Köszönöm még egyszer, nagyon sokat segítettetek.
6

faék

szabo.b.gabor · 2010. Aug. 11. (Sze), 17.42
nem akarom magam hüjének feltűntetni, de miért nem csinálod úgy, hogy

<?php
exec('cp satöbbi..'); #vagy ennek a windows-os megfelelője
?>
tudom nem 'hordozható' a kód, na és..

oh most látom, hogy szóbeli tételről van szó..
7

Ez helyes?

Kribali · 2010. Aug. 17. (K), 09.19
Tehát valami ilyesmi a megoldás? Persze csak elméletben.

Formban másolandó mappanév megadása, másolás helyének megadása;
Másolandó mappa megnyitása opendir();
Mappa tratalmának kiolvasása readir();
Új mappa létrehozása a megadott helyen mkdir();
Fájlok másolása a megadott helyre, a létrehozott mappába copy();
Eredeti mappa bezárása closedir();
Vége;

Azt tudom, hogy ez a gyakorlatban még kevés, hiszen az ellenőrzések és védelmek hiányoznak, de ezek nekem nem is kellenek, mivel a tétel sem kéri.
A kérdésem, a fenti elgondolás helyes-e, vagy kimaradt valami?
8

Ez a szkript nem rekurzív, de most nekem elég volt, hátha segít

Báhidszki Márton · 2015. Szep. 4. (P), 12.51
function mappamasolas($dir_source,$dir_target)
{
//ha egyáltalán van miből másolni
if (is_dir($dir_source))
{
//létrehozom az új mappát, ha nincs
if(!is_dir($dir_target))mkdir($dir_target);

if ($dir_source_azon = opendir($dir_source))
{
while (false !== ($fajl = readdir($dir_source_azon)))
{
if ($fajl != "." && $fajl != "..")
{
copy($dir_source."/".$fajl,$dir_target."/".$fajl);//fájlt másolom
}
}
}
closedir($dir_source_azon);
}
}
9

flame

pythonozok · 2015. Szep. 4. (P), 13.57
Azért ez nem semmi! Hét év tagság, két hozzászólás, mindkettő régi, több éves témához, és ennyi idő alatt még a kódszínezőt sem sikerült felfedeznie.
10

//létrehozom az új mappát, ha

kuka · 2015. Szep. 4. (P), 14.46
//létrehozom az új mappát, ha nincs
Optimista. És ha nem sikerült a létrehozás (nemlétező szülő könyvtár, létező állománynév, hiányzó jogosultság)?