Hier ist mein Controller-Code zum Hochladen mehrerer Dateien und ich gebe Schlüssel und Wert vom 'postman' Rest API-Client an Google Chrome weiter. Ich füge mehrere Dateien vom Postboten hinzu, aber nur 1 Datei wird hochgeladen.
%Vor%Ich habe diesen Code auch ausprobiert, aber er gibt mir den Speicherort einer Datei im temporären Ordner zurück
%Vor%und %Code% gibt mir immer 5. Kann jemand mir sagen warum?
und warum echo count($_FILES['file']);
dem Fehler ungültige Argumente gibt
Keine API verwenden, aber dies könnte das Prinzip umschreiben.
Ich habe diese Datei routes.php eingerichtet, die Ihnen beim Hochladen hilft.
routes.php
%Vor%Beachten Sie den eingegebenen Namen, Dateien []: Wenn Sie mehrere Dateien unter demselben Namen hochladen, fügen Sie auch Klammern hinzu.
Sie können alle Dateien erhalten, indem Sie einfach:
%Vor% Die Klasse Input
ist eigentlich eine Fassade für die Illuminate\Http\Request
Klasse (Ja, genau wie die Request
Fassade - sie beide dienen als "Gesicht" für die gleiche Klasse! **).
Das bedeutet, dass Sie alle in Request verfügbaren Methoden verwenden können.
Wenn wir nach der Funktion file()
suchen Wir sehen es so:
Nun ist retrieveItem()
eine geschützte Methode, daher können wir sie nicht einfach direkt von unserem Controller aus aufrufen. Wenn wir genauer hinschauen, sehen wir, dass wir die Methode file()
weitergeben können "null" für den Schlüssel. Wenn wir das tun, bekommen wir alle Gegenstände!
Also, wenn wir Input::file()
aufrufen, führt die Request-Klasse intern $this->retrieveItem('files', null, null)
aus, was wiederum return $this->files->all();
ausführt und wir werden alle hochgeladenen Dateien erhalten.
** Beachten Sie, dass Input
Facade die zusätzliche Methode get () ist darin verfügbar.
Die obigen Lösungen funktionieren nicht mit mehreren Dateien, da die Rückgabe ausgelöst wird, sobald das erste Objekt validiert wird. Hier ist also eine Lösung nach mehreren Stunden Kopfwandschlagen. inspiriert von Ссылка
%Vor% Im Grunde speichern Sie die Dateinamen in einem Array und übergeben diese Arrays an eine Sitzung, fügen Sie dann nur return
hinzu, wenn die Schleife beendet ist.
1. Formular: - Das Tag zum Öffnen des Formulars muss 'files' = & gt; true haben und das Dateifeld muss den Namen [] (mit Array) und 'multiple' = & gt; true
haben %Vor%2. Fügen Sie Ihrer Controller-Funktion den folgenden Code hinzu: -
%Vor%QUELLE: Ссылка
BEARBEITEN: Referenzquellenlink funktioniert nicht .