move_uploaded_file - Funktioniert nur bedingt.

schranzbaum

Mitglied
Hallo an Alle,

ich hab hier gerade ein Problem: Ich hab ein Formular, über das ich mir Dateien auf den Server laden lassen kann. Mit move_uploaded_file werden die Dateien umbenannt und auf den Server kopiert, so wie das sein soll.

Ein Problem taucht auf, wenn ich move_uploaded_file in einer Schleife einer DB-Abfrage laufen lasse.

Ich lasse aus einer DB-Tabelle etwas auslesen, verändere dann den Dateinamen und möchte über move_uploaded_file die Datei dann unter diesen geänderten Namen auf den Server speichern.

Beispiel: Eine Datei wird über das Formular vom Rechner ausgewählt und das Formular wird abgeschickt. Das Formular wird vererbeitet. Aufgrund der Formulardaten wird eine DB-Abfrage (MySQL) gestartet. es werden 7 Treffer erzeugt, also soll die über das Formular ausgewählte Datei unter 7 verschiedenen Namen auf den Server kopiert werden. Die 7 unterschiedlichen Namen werden mir auch immer angezeigt und anschließend auch richtig in eine neue DB-Tabelle eingetragen, auf dem Server liegt aber immer nur eine Datei mit dem geänderten Namen, und zwar immer der aus der ersten Schleife der ersten DB-Abfrage.


Ich will das mal veranschaulichen:

Formular: Wird versendet an 5 Leute, 1 Datei hochgeladen.
DB-Abfrage: Wählt ID der 5 Leute aus, ändert den Dateinamen der hochzuladenden Datei mit md5(id)+endung, also z.B.
1. Durchlauf: 23456767890489045890453.jpg
2. Durchlauf: ccdfewfojklewrjklrewjklrewjkl.jpg
3. Durchlauf: 34343434439045368905689.jpg
- zum 5. oder von mir aus 10. Durchlauf.

1-3 werden wieder in eine neue DB eingetragen (richtig) und die hochgeladene Datei wird unter dem Dateinamen aus dem 1. Durchlauf auf den Server geladen (auch richtig), warum wird die datei aber nicht auch unter dem Namen des 2. Durchlaufs und des 3. Durchlaufs grespeichert?



Weiss da vielleicht jemand Rat?

Vielen Dank im Voraus.
 
Hi,

wenn es dir nur um das Umbenennen von Dateien geht, wäre wohl die Funktion rename() geeigneter.

Stimmt. Wenn ich umbennen wollte. Will ich aber nicht.

Meine Frage nochmal vereinfacht:

Wieso läd der beim ersten Durchlauf die beiden Dateien mit "move_uploaded_file" auf den Server, beim zweiten Durchlauf aber nicht? Dass es nicht geht, weiss ich, ich würde gerne wissen, warum es nicht geht.
 
Lass mal die Fehlermeldungen anzeigen:

PHP:
// Schreib mich in die ersten Zeilen des Scripts
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
 
Zurück