HTML form input multiple upload: Anzahl der Dateien zum Auswählen festlegen.

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hallo,

ich finde bisher kein html Attribut, was die Anzahl der Dateien zum Auswählen beim Upload begrenzt. Wäre klüger, wenn der Benutzer schon vor dem Abschicken des Formulars schon eine Begrenzung beim Auswählen hat. Möchte auch nicht 5 input Felder für 5 Dateien. Ansonsten prüfe ich halt die Anzahl mit PHP für das übergebene Upload-Array, was jedoch nicht so schön ist.

Gibt es so ein Attribut in HTML5?
 
Direkt per HTML Attribut kenn' ich auch nichts ausser bestimmte Dateitypen oder Dateiendungen aber mit Javascript kann man wohl die Anzahl Dateien auslesen:
http://stackoverflow.com/questions/...-their-filenames-from-file-input-element-with
Das könntest Du ja per onchange auslösen und das in Kombination mit dem PHP Check (für ältere IEs und generell serverseitige Validierung) müsste der Workflow eigentlich gut funktionieren.
 
Zuletzt bearbeitet:
Lawnmower schrieb:
Das könntest Du ja per onchange auslösen und das in Kombination mit dem PHP Check (für ältere IEs und generell serverseitige Validierung) müsste der Workflow eigentlich gut funktionieren.

Danke, klingt nach einer guten Maßnahme.

Ich hätte dann noch eine weitere Frage, für die ich jetzt kein neuen Thread aufmachen will. Ich möchte die Dateien nicht direkt auf den Server hochladen, denn der User soll, nachdem er die Dateien ausgewählt hat und auf Upload gedrückt hat, noch zu jeder Datei einen Zeitraum angeben, für welchen die Datei danach geparst werden soll. (sorry für den langen Satz)

Der Zeitraum nach der Upload Auswahl ist für die jeweilige Datei wieder ein eigenes Formular. Ich möchte die Datei am liebsten erst auf den Server laden, nachdem der Zeitraum angegeben und das zweite Formular abgeschickt wurde. D.h. ich muss die Dateiauswahl über zwei Formulare mitschleifen. Ich hatte einfach versucht das Array über ein hidden-Feld im Formular mitzuliefern, jedoch hat dies bisher noch nicht so gut funktioniert.

Wenn ich die Dateien nicht sofort auf dem Server hochladen müsste, dann würde dies auf jeden Fall Datenmüll einsparen oder ich müsste keinen Chronjob bauen, der ab und zu meinen Server bereinigt...

MfG
 
Du könntest, wenn Du eh schon auslist wieviele Dateien ausgewählt wurden für den Upload, dynamisch zusätzliche Input Felder einblenden wo man den Zeitraum angeben kann; die Dateinamen kann man ja per Javascript und dem files Objekt auch auslesen. Sprich der User wählt die Dateien aus, onchange wird ausgelöst (der User klickt also noch nicht auf "Upload"), Du liest die Namen der ausgewählten Dateien mittels Schleife aus und erstellst eine HTML Tabelle und pro Datei eine neue Zeile (1. Spalte Dateiname, 2. Spalte Eingabefeld 1, 3. Spalte Eingabefeld 2, etc) in einem leeren Div.
 
AW: Doppelt gemoppeltes Upload-Formular

Eine gute Frage ist:

Wird denn die Datei im Pfad $_FILES['files']['tmp_name'] gelöscht, sobald man nach der direkten POST-Übermittlung die Seite verlässt oder einen weiteren POST übermittelt?

Ich hatte nämlich versucht, einfach den tmp_name in einem hidden-Feld in ein zweites Formular einzubetten und dann habe ich mit folgendem billigen Code geprüft, ob die vorher hochgeladene temporäre Datei existiert:
PHP:
if(isset($_POST['start-script'])){
	$tmp = mysql_real_escape_string($_POST['tmp']);
	if(file_exists($tmp))
		echo $tmp;
	else
		echo 'Nicht mehr vorhanden';
}
 
Wenn ich es richtig verstanden habe, was du willst, erlauben Browser das zum Glück nicht.

Ansonsten könntest du ja "theoretisch" den Browser des Nutzers anweisen, beliebige Dateien an dich zu schicken. Das File-Input Feld ist besonders geschützt. Unter anderem kann man (soweit ich weiß, bitte nicht schlagen) via JS nur LESEND auf das Feld zugreifen. Ansonsten wäre keine Datei, auf die der Browser Zugriff hat, mehr sicher (document.write und submit() als Stichworte).

Wenn <Input type="file"> dann wird beim Submit die Datei geschickt, sofern der Server sie annimmt, kein Array aus Dateinamen, dass sich der Server dann irgendwann abholt/abholen darf.

Also entweder ERST alles hochladen und danach vom Nutzer bearbeiten lassen ODER mehrere Upload-Felder. Anders geht es glaube ich nicht.

P.S.: $_Files, $_post, $_GET sind nur im Kontext des aufgerufenen PHP-Skriptes gültig. Schließlich rufe ich ja eine Seite auf mit index.php?variable=123 Nur Dann enthält $_get diese Variable mit Inhalt 123. Gleiches mit $_File und $_Post. Nur in der aktuellen Session/Aufruf/Kontext gültig. Wie sollten sonst größere Seiten mit mehreren usern/uploads gleichzeitig wissen, welche Datei zu welchem User gehört...
 
Zuletzt bearbeitet:
Zurück
Oben