Uploadskript in mehreren Dateien
siziwi
- php
Habe eine Frage bezüglich eines Uploadskriptes mit php.
Habe mal versucht eines selbr zu schreiben. Dieses hatte ich zuerst in einer Datei, habe dann aber gemerkt, dass wenn ich eine Überprüfung des Users machen lasse, es ziemlich kompliziert wird dies alles in einer datei unterzubringen. Darum habe ich es nun in drei Datein aufgeteilt.
1.Datei: html-formular um Daten zu sammeln
2.Datei: php skript, welches Dateitype, Grösse, usw. überpüft und anschliessend alle Daten wieder in einem Formular darstellt um diese dann vom User zu bestätigen.
3.Datei: eigentlicher Upload und Schreiben der Daten in eine Datenbank.
Doch lieder funktioniert der Upload nicht mehr! Die Daten werden zwar noch in die Datenbank geschrieben, aber keine Datei hochgladen!
Ebenfalls liefert "print_r($_FILES);" keine Daten mehr, einzige Ausgabe is "array"!
Woran liegt das?
Werden nicht alle Daten richtig von einer Datei zur andren übertragen?
Danke für eure Hilfe
hi,
1.Datei: html-formular um Daten zu sammeln
Definiere "Daten sammeln".
Wird dabei auch schon die hochzuladende Datei ausgewählt?
2.Datei: php skript, welches Dateitype, Grösse, usw. überpüft und anschliessend alle Daten wieder in einem Formular darstellt um diese dann vom User zu bestätigen.
Dann ist die hochgeladene Datei in diesem Script in $_FILES verfügbar.
3.Datei: eigentlicher Upload und Schreiben der Daten in eine Datenbank.
Nee, dass er "eigentlich Upload" jetzt erst stattfindet, bildest du dir nur ein.
Doch lieder funktioniert der Upload nicht mehr! Die Daten werden zwar noch in die Datenbank geschrieben, aber keine Datei hochgladen!
Normale Feldwerte kannst du durch Vorbelegung von Formularelementinhalte noch mal zum Client zurückschicken und beim zweiten Abschicken wieder mitliefern lassen - aber für File-Inputs geht das nicht.
Werden nicht alle Daten richtig von einer Datei zur andren übertragen?
Doch, genau so, wie vorgesehen.
gruß,
wahsaga
hi,
1.Datei: html-formular um Daten zu sammeln
Definiere "Daten sammeln".
Wird dabei auch schon die hochzuladende Datei ausgewählt?
Ja die Datei wird ausgewählt!
2.Datei: php skript, welches Dateitype, Grösse, usw. überpüft und anschliessend alle Daten wieder in einem Formular darstellt um diese dann vom User zu bestätigen.
Dann ist die hochgeladene Datei in diesem Script in $_FILES verfügbar.
Ja das ist mir auch klar, benötige dies ja auch um die Dateigrösse zu prüfen.
3.Datei: eigentlicher Upload und Schreiben der Daten in eine Datenbank.
Nee, dass er "eigentlich Upload" jetzt erst stattfindet, bildest du dir nur ein.
Ich glaube nicht, denn erst jetzt kommt "move_uploaded_file($_FILES['datei']['tmp_name'],$str_ziel);" (Damit wird doch die Datei hochgeladen, oder nicht?)
Doch lieder funktioniert der Upload nicht mehr! Die Daten werden zwar noch in die Datenbank geschrieben, aber keine Datei hochgladen!
Normale Feldwerte kannst du durch Vorbelegung von Formularelementinhalte noch mal zum Client zurückschicken und beim zweiten Abschicken wieder mitliefern lassen - aber für File-Inputs geht das nicht.
Was heisst das genau? z.B die Bechribung zur ausgewählten Datei, welche der User auch eingeben kann, kann ich weider zum User zurückschicken?!? aber die "Datei", resp. den Pfad (bzw. die Infos von $_FILES) selber nicht?
Hier ist noch der Link zum Formular und die foglenden zwei Dateien:http://laclasse.la.funpic.de/matura/upload/formular_upload.html
gruß,
wahsaga
gruess
siziwi
hi,
Nee, dass er "eigentlich Upload" jetzt erst stattfindet, bildest du dir nur ein.
Ich glaube nicht, denn erst jetzt kommt "move_uploaded_file($_FILES['datei']['tmp_name'],$str_ziel);" (Damit wird doch die Datei hochgeladen, oder nicht?)
Nein, hochgeladen wird sie durch das Abschicken des Formulars im HTML.
move_uploaded_file dient nur dazu, die Datei aus dem temp-Verzeichnis auf dem Server, in welches sie hochgeladen wurde, an einen anderen Ort zu verschieben. Das geht aber nur in der Scriptinstanz, an die die Formulardaten geschickt wurden.
Was heisst das genau? z.B die Bechribung zur ausgewählten Datei, welche der User auch eingeben kann, kann ich weider zum User zurückschicken?!? aber die "Datei", resp. den Pfad (bzw. die Infos von $_FILES) selber nicht?
Genau.
Ausserdem wurde die Datei ja bereits hochgeladen - das jetzt noch mal zu machen, würde doppelten Traffic sowohl für Client als auch Server bedeuten.
gruß,
wahsaga
hi,
Nee, dass er "eigentlich Upload" jetzt erst stattfindet, bildest du dir nur ein.
Ich glaube nicht, denn erst jetzt kommt "move_uploaded_file($_FILES['datei']['tmp_name'],$str_ziel);" (Damit wird doch die Datei hochgeladen, oder nicht?)Nein, hochgeladen wird sie durch das Abschicken des Formulars im HTML.
aha jetzt wird mir alles klarar!
move_uploaded_file dient nur dazu, die Datei aus dem temp-Verzeichnis auf dem Server, in welches sie hochgeladen wurde, an einen anderen Ort zu verschieben. Das geht aber nur in der Scriptinstanz, an die die Formulardaten geschickt wurden.
darum funktionert es auch nicht eine Datei "später"!
Was heisst das genau? z.B die Bechribung zur ausgewählten Datei, welche der User auch eingeben kann, kann ich weider zum User zurückschicken?!? aber die "Datei", resp. den Pfad (bzw. die Infos von $_FILES) selber nicht?
Genau.
Ausserdem wurde die Datei ja bereits hochgeladen - das jetzt noch mal zu machen, würde doppelten Traffic sowohl für Client als auch Server bedeuten.
Ja mal abgesehen vom Traffic, wie könnte man dies nun realisieren, dass der User doch noch alle seine Daten überprüfen kann, bevor die Datei em richtigen Ort gespeichert wird?
Wüsstes du gerade eine Lösung, einen Lösungsansatz?
gruess
siziwi
hi,
Ja mal abgesehen vom Traffic, wie könnte man dies nun realisieren, dass der User doch noch alle seine Daten überprüfen kann, bevor die Datei em richtigen Ort gespeichert wird?
Entweder man lässt ihn erst nur die beschreibenden Daten eingeben, und erst wenn diese bestätigt sind, bietet man ihm die Möglichkeit zum Dateiupload an,
oder man lässt ihn die Datei gleich hochladen, und danach nur noch die restlichen Daten bestätigen, bzw. nur auf explizite Anforderung hin noch mal eine neue Datei hochladen.
gruß,
wahsaga
oder man lässt ihn die Datei gleich hochladen, und danach nur noch die restlichen Daten bestätigen, bzw. nur auf explizite Anforderung hin noch mal eine neue Datei hochladen.
wie ist denn der befehl die datei aus dem temp verzeichnis zu löschen?
gibt es da eine standart funktion, oder muss ich den ort mit angeben?
hi,
wie ist denn der befehl die datei aus dem temp verzeichnis zu löschen?
gibt es da eine standart funktion, oder muss ich den ort mit angeben?
Ein Temp-Verzeichnis ist für die Ablage temporärer Daten gedacht, um deren Beseitigung man sich nicht selber kümmern muss.
Eine hochgeladene Datei wird, sofern sie nicht im verarbeitenden Script aus dem Temp-Verzeichnis rausgeholt wird, von PHP nach Ende dieses Scriptes automatisch wieder entsorgt.
gruß,
wahsaga
Eine hochgeladene Datei wird, sofern sie nicht im verarbeitenden Script aus dem Temp-Verzeichnis rausgeholt wird, von PHP nach Ende dieses Scriptes automatisch wieder entsorgt.
ah cool, dass wusste ich nicht.
Hey
Entweder man lässt ihn erst nur die beschreibenden Daten eingeben, und erst wenn diese bestätigt sind, bietet man ihm die Möglichkeit zum Dateiupload an,
oder man lässt ihn die Datei gleich hochladen, und danach nur noch die restlichen Daten bestätigen, bzw. nur auf explizite Anforderung hin noch mal eine neue Datei hochladen.
ok dann werde ich dies mal so versuchen!
Danke für deine Hilfe
gruess
siziwi