Ich habe Erfahrung damit, einzelne Dateien hochzuladen <input type="file">
. Ich habe jedoch Probleme, mehrere gleichzeitig hochzuladen.
Zum Beispiel möchte ich in der Lage sein, eine Reihe von Bildern auszuwählen und sie dann gleichzeitig auf den Server hochzuladen.
Wenn möglich, wäre es großartig, ein einzelnes Dateieingabesteuerelement zu verwenden.
Weiß jemand, wie man das erreicht? Vielen Dank!
Antworten:
Dies ist in HTML5 möglich . Beispiel (PHP 5.4):
So sieht es in Chrome aus, nachdem Sie zwei Elemente im Dateidialog ausgewählt haben:
Und so sieht es aus, nachdem Sie auf die Schaltfläche "Hochladen" geklickt haben.
Dies ist nur eine Skizze einer voll funktionsfähigen Antwort. Weitere Informationen zur ordnungsgemäßen und sicheren Behandlung von Datei-Uploads in PHP finden Sie im PHP-Handbuch: Behandeln von Datei-Uploads.
quelle
multiple="multiple"
?name="file[]"
). Ich habe versucht , die Antwort zu bearbeiten , aber sie wurde abgelehnt.Es gibt ein paar Dinge, die Sie tun müssen, um einen Upload mit mehreren Dateien zu erstellen. Sie müssen nicht Java, Ajax, Flash verwenden. Erstellen Sie einfach ein normales Formular zum Hochladen von Dateien, beginnend mit:
Dann der Schlüssel zum Erfolg;
<input type="file" name="file[]" multiple />
Vergessen Sie diese Klammern NICHT! Versuchen Sie in der post_upload.php Folgendes:
Beachten Sie, dass Sie ein Array mit tmp_name-Daten erhalten. Dies bedeutet, dass Sie auf jede Datei mit einem dritten Klammerpaar mit dem Beispiel 'number' zugreifen können:
Sie können php count () verwenden, um die Anzahl der ausgewählten Dateien zu zählen. Viel Glück widdit!
quelle
foreach
Anweisung durchlaufen , ohne die Anzahl der hochgeladenen Dateien kennen zu müssen ...Vollständige Lösung in Firefox 5:
quelle
<html> <head> </head> <body> <form name="uploader" id="uploader" action="multifile.php" method="POST" enctype="multipart/form-data" > <input id="infile" name="infile[]" type="file" onBlur="submit();" multiple="true" ></input> </form>
Wenn Sie mehrere Dateien aus dem Dateiauswahldialog auswählen möchten, der angezeigt wird, wenn Sie Durchsuchen auswählen, haben Sie größtenteils kein Glück. Sie müssen ein Java-Applet oder ähnliches verwenden (ich glaube, es gibt eines, das eine kleine Flash-Datei verwendet, die ich aktualisieren werde, wenn ich sie finde). Derzeit ermöglicht eine einzelne Dateieingabe nur die Auswahl einer einzelnen Datei.
Wenn Sie über die Verwendung mehrerer Dateieingaben sprechen, sollte es keinen großen Unterschied zur Verwendung einer geben. Poste einen Code und ich werde versuchen, weiter zu helfen.
Update: Es gibt eine Methode, um eine einzelne Schaltfläche zum Durchsuchen zu verwenden, die Flash verwendet. Ich habe das nie persönlich benutzt, aber ich habe eine ganze Menge darüber gelesen. Ich denke, es ist dein bester Schuss.
http://swfupload.org/
quelle
in der ersten sollten Sie Form wie folgt machen:
das ist richtig . Fügen Sie diesen Code nun unter Ihrem Formularcode oder auf einer beliebigen Seite hinzu
es ist einfach ... fertig
quelle
Wenn Sie mehrere Eingabefelder verwenden, können Sie name = "file []" (oder einen anderen Namen) festlegen. Dadurch werden sie beim Hochladen in ein Array eingefügt (
$_FILES['file'] = array ({file_array},{file_array]..)
)quelle
FOR-Schleife verwenden
Verwenden der FOREACH-Schleife
quelle
Ich habe eine PHP-Funktion erstellt, die zum Hochladen mehrerer Bilder verwendet wird. Diese Funktion kann mehrere Bilder in einem bestimmten Ordner hochladen und die Datensätze im folgenden Code in der Datenbank speichern. $ arrayimage ist das Array von Bildern, das über die Formularnotiz gesendet wird Damit der Upload nicht mehrere verwenden kann, müssen Sie jedoch ein anderes Eingabefeld mit demselben Namen erstellen und das dynamische Hinzufügen eines Felds für die Eingabe von Dateien beim Klicken auf die Schaltfläche festlegen.
$ dir ist das Verzeichnis, in dem Sie das Bild speichern möchten. $ fields ist der Name des Feldes, das Sie in der Datenbank speichern möchten
Das Datenbankfeld muss in einem Array-Format vorliegen. Wenn Sie einen Datenbank-Imagestore und einen Feldnamen wie ID, Name, Adresse haben, müssen Sie Daten wie veröffentlichen
und übergeben Sie dieses Feld dann an die Funktion $ fields
$ table ist der Name der Tabelle, in der Sie die Daten speichern möchten.
// Die imageFunctions-Klasse endet hier
Sie können diesen Code zum Einfügen mehrerer Bilder mit seiner Erweiterung ausprobieren. Diese Funktion wurde zum Überprüfen von Bilddateien erstellt. Sie können die Erweiterungsliste für bestimmte Dateien im Code ersetzen
quelle
Teilantwort: Birne HTTP_UPLOAD kann nützlich sein. http://pear.php.net/manual/en/package.http.http-upload.examples.php
Es gibt ein vollständiges Beispiel für mehrere Dateien
quelle