[PHP] Wie ein File auf dem Server kopieren?

Benutzer-42

abgemeldet
20 April 2006
22.497
1.328
Wie kann ich ein File, in meinem Fall Smilies, auf dem Server kopieren?

Aktuell arbeitet das Script mit dem Befehl MOVE und verschiebt den Smilie in ein Verzeichnis, nun will ich aber noch, dass zusätzlich die Smilies in ein Gesamtverzeichnis kopiert werden, also eben quasi eine Gesamtübersicht machen

Wie kann man ein File auf dem Server kopieren?
Oder kann man beim MOVE auch in zwei Verzeichnisse gleichzeitig verschieben?
 
Kopieren geht mit copy. An zwei Stellen gleichzeitig verschieben geht wohl nicht, da könnte man höchstens ausprobieren, ob Datei einlesen und per fwrite o.ä. an beide Stellen schreiben bessere Perfomance bringt.
(Meinst du mit move den Befehl move_uploaded_file?)
 
der Bereich des Scriptes stammt leider noch aus dem Originalscript

vielleicht kannst du mir ja auch anhand des Codes erklären, wie das in etwas abläuft:

Code:
if ($_REQUEST['action'.$i] == 'add'){
      $origin = $new_path . '/' . $_REQUEST['smiley'.$i];
      $destination = $smilies_path . '/' .$_REQUEST['category'.$i] . '/' . $_REQUEST['name'.$i];
      echo "<br> $origin -> $destination ";
      echo (rename($origin, $destination))?"<font color=green>JA!</font>":"<font color=red>NEIN!</font>";
      touch($destination);

ich hoffe, das ist der Bereich für den Upload....
 
Da wird einfach nur eine Datei von $origin nach $destination verschoben (und Ja oder Nein ausgegeben) und dann noch per touch das Dateidatum auf das aktuelle gesetzt.
Wenn die Datei einfach nur an eine weitere Stelle kopiert werden soll, sollte das mit

PHP:
$origin = $new_path . '/' . $_REQUEST['smiley'.$i];
$destination = $smilies_path . '/' .$_REQUEST['category'.$i] . '/' . $_REQUEST['name'.$i];
echo "<br> $origin -> $destination ";
/******  neu *********/
echo (copy($origin, "zielordner/bla/blubb/".$_REQUEST['name'.$i]))?"Ja":"Nein";
/******  / neu *********/
echo (rename($origin, $destination))?"<font color=green>JA!</font>":"<font color=red>NEIN!</font>";
touch($destination);
gehen. Vorrausgesetzt natürlich, dass Schreibrechte vorhanden sind. (Und $_REQUEST['name'.$i] etc. sollten natürlich überprüft werden, damit dir da niemand ne PHP-Datei auf den Server kopiert oder sowas)
 
(Und $_REQUEST['name'.$i] etc. sollten natürlich überprüft werden, damit dir da niemand ne PHP-Datei auf den Server kopiert oder sowas)

da passiert nichts

denn der userupload ist getrennt, das ist aus dem adminbereich

der user kann nur in ein bestimtes verzeichnis laden, und ich verschiebe die dann aus dem adminbereich ins entsprechende verzeichnis
deswegen wollte ich ja da nun ein zweites angeben, eben eines, in dem dann alle einmal drin sind, um auch schneller dann ab und an mal nach doppelten zu suchen, dann brauche ich nur ein verzeichnis runterladen und mir alle mal schnell überschauen

denn bei einigen tausend smilies, die ich irgendwann mal haben will, wird das dann doch mal schwierig ...

ich kann mal schauen, das verzeichnis kann ich ja dann auch außerhalb der rubriken legen, dass nur ich das sehen kann...
 
Super ... das klappt ...

nun probiere ich erstmal wieder ein wenig, wie ich das verzeichnis vor dem uploaden jeweils auslesen kann, um dann die smilies im sammelverzeichnis von 1-x zu numerieren, also die neuen immer dann hinten dran zu hängen ...

weil es ja sonst mal schnell zu einer kollision kommen kann ...

und dann auch direkt für die anderen verzeichnisse ...

aber da tüftel ich erstmal wieder selber, bis mir wieder keine ideen kommen :evil:
 
Super ... das klappt ...

nun probiere ich erstmal wieder ein wenig, wie ich das verzeichnis vor dem uploaden jeweils auslesen kann, um dann die smilies im sammelverzeichnis von 1-x zu numerieren, also die neuen immer dann hinten dran zu hängen ...

Eine Frage: Warum willst du die Smilies in verschiedenen Verzeichnissen abspeichern ? Du könntest sie genauso gut in einem Verzeichnis bzw in der Datenbank speichern :)
 
hmm

um ehrlich zu sein?!

weil das script, aus dem ich meine jetzige seite weiterentwickelt habe / weiterentwickel, dieses so vorgegeben hatte

es wird einmalig das verzeichnis eingelesen, danach in eine datei (für alle verzeichnisse) abgespeichert und aus dieser liste dann per array einfach imer nur ausgelesen

also ist es quasi wie in einer datenbank

die smilies liegen nur sortiert nach den rubriken in den jeweiligen verzeichnissen