Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Rekursives uploaden von Ordnern (https://www.delphipraxis.net/63462-%5Bphp%5D-rekursives-uploaden-von-ordnern.html)

Sebastian R. 19. Feb 2006 10:28


[PHP] Rekursives uploaden von Ordnern
 
Hi Leute,
ich brauche ein Skript in PHP, indem ich den Ordner von meiner Festplatte bestimme, z.B. C:\Homepage\ und das Skript dann alle Files und Ordner aus C:\Homepage\ auf meinen Server zieht. Sprich wenn Homepage einen Unterordner test hat, dann soll dieser auch auf meinem Server zu sehen sein.

MfG, Sebastian R.

PS: Ich habe es bereits probiert, klappt leider bei mir nicht.

mh166 19. Feb 2006 23:48

Re: [PHP] Rekursives uploaden von Ordnern
 
Das ist so erstmal nich möglich. Schließlich läuft PHP ja aufm Server und hat von daher keinen Zugriff auf deine lokale HDD. Wäre ja noch schöner ;)

Allerdings würden mir jetzt zwei Wege einfallen, wie man das mehr oder weniger eleganz lösen könnte:
:arrow: #1 wäre den Ordner einfach zu zippen (mit Ordnerstruktur) und dann die zip uploaden und entpacken lassen. Solch eine Funktion bietet beispielsweise WebFTP.
:arrow: #2 könnte man das eventuell mittels AJAX lösen. Das heißt, du gibst dem das Verzeichnis an, und per JavaScript wird dann durch iteriert und die einzelnen Dateien hochgeladen. Ob das allerdings so auch in der Praxis umzusetzen ist, weiß ich nicht und dass es bereits fertige Skripte nach diesem Lösungsansatz gibt, bezweifle ich.

so far...
mfg, mh166

Phoenix 20. Feb 2006 08:41

Re: [PHP] Rekursives uploaden von Ordnern
 
Zitat:

Zitat von mh166
:arrow: #2 könnte man das eventuell mittels AJAX lösen. Das heißt, du gibst dem das Verzeichnis an, und per JavaScript wird dann durch iteriert und die einzelnen Dateien hochgeladen.

Ich glaube nicht, dass das geht. Schliesslich darf auch JavaScript nur auf explizit angegebene Dateien zugreifen und auch nicht frei nach Gutdünken einfach mal so über die Festplatte spazieren.

Ich denke, das Verzeichnis zu zippen und diese eine .zip an das PHP-Script zu senden ist das beste. Das Script kann die Datei dann nämlich mit allen Unterverzeichnissen auch wieder entpacken - und es hat noch einen Vorteil: Es geht schneller hochzuladen als wenn es ungepackt wäre :)

Sebastian R. 20. Feb 2006 08:46

Re: [PHP] Rekursives uploaden von Ordnern
 
Zitat:

Zitat von mh166
Das ist so erstmal nich möglich. Schließlich läuft PHP ja aufm Server und hat von daher keinen Zugriff auf deine lokale HDD. Wäre ja noch schöner ;)

Doch, das geht. Es ist ja kein Inet-Server, sondern er läuft im Home-Netzwerk. Da kann man per Copy auch auf Files von dem zugreifen, der das Skript grade ausführt. Ich habe ja schon ein Skript geschrieben, welches einzelne Files uploadet. Jetzt brauch ich eine eine rekursive Funktion, die mir dem Filename extrahiert und dann hochlädt.

Sprich wenn ich C:\Homepage\ übergeben, und der Ordner hat 2 Unterordner HP und Test1, dann soll er sowas machen:

C:\Homepage\Test1\index.htm to localhost/Test1/index.htm
...

Phoenix 20. Feb 2006 10:23

Re: [PHP] Rekursives uploaden von Ordnern
 
Äh. Ich komm da grad nicht so ganz mit.

Das Skript 'ausführen' kann ausschliesslich der Server. Das Script 'aufrufen' bzw. die Ausführung anstossen kann jeder beliebige Rechner.

Wenn Du nun C:\anyfile im Webbrowser angibst, dann sendet Dein Webbrowser C:\anyfile an den Webserver, und dieser übergibt die Datei an Dein PHP-Script. Dein Php-Script kann gar keine Ahnung haben, wie die Verzeichnisstruktur des anfragenden Rechners aussieht.

Etwas anderes wäre, wenn Du z.B. \\DEINRECHNERNAME\$C\anyfolder angibst, und Dein PHP-Script dann - wie auf dem localhost Filesystem - halt auf die normale Netzwerkfreigabe zugreift. Dort kannst Du dann auch rekursiv arbeiten (genauso wie Du ein Verzeichnis mit allen Files, Unterordnern und einer ganzen Baumstruktur vom Server auf einer Webseite anzeigen lassen kannst).

Du kannst freilich versuchen, anhand der http-Header die IP abzufragen und aus dem Pfad 'C:\anyfolder\' eben sowas wie \\xxx.xxx.xxx.xxx(ip des anfragenden rechners)\$C\anyfolder' zu machen, aber ob das so gut funktioniert ist eine andere Sache.

In den beiden Fällen musst Du übrigens dafür sorgen, dass Dein Server im Heimnetzwerk bzw. genauer dessen Besitzer des Webserver-Prozesses auch auf Deine Standard-Freigaben zugreifen darf.

mh166 20. Feb 2006 10:53

Re: [PHP] Rekursives uploaden von Ordnern
 
Hmm... hab ich das richtig verstanden? Der Webserver is auf der selben Maschine, wie die Dateien die hochgeladen werden sollen?

Naja, however. Wenn du shcon einzelne Dateien hochgeladen hast, dann wirst schon wissen, wie dus machst. Bleibt also nur noch das Problem mit dem rekursiven hochladen. Dafür würd ich dir die Suche hier empfehlen. Vor wenigen Tagen gabs hier einen Thread zum Directorylisting per PHP. Dieses Skript zum listen des Verzeichnisses packst du dann einfach in eine function und falls ein Objekt ein Ordner ist, dann ruft sich die Funktion selbst wieder mit dem neuen Verzeichnis auf... rekursiv eben.

@Phoenix: najut, deswegen sagte ich ja, dass ich nich sicher bin, obs geht. Hab mit JS nich so viel am Hut. Wäre halt das einzige was hätte möglich sein können. Aber wenn man sichs mal durch den Kopf gehen lässt, dann is das so auch besser so. Kann ja sein, dass andere auf die selbe Idee kommen - ohne dabei was gutes im Schilde zu führen. ;)

mfg, mh166


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz