Ich habe wirklich keine Ahnung, wo das Problem liegt, um ehrlich zu sein.
Könnte Dropzone, Laravel (5.4) sein ... Also hoffe ich wirklich, dass sogar ein Gedanke mir helfen könnte, dieses Problem zu überwinden.
Wenn ich Dateien hochlade, erhalte ich keine js Probleme, aber Laravel wirft mir folgenden Fehler (für jede Datei):
Rufen Sie die nicht definierte Methode Symfony \ Component \ HttpFoundation \ File \ UploadedFile :: store ()
aufDies ist mein Backend-Code (Fehler wird in der portfolioStore-Methode gesetzt):
%Vor%In jedem Fall ist hier meine Dropzone config:
%Vor%Hier ist die Ansicht:
%Vor%Nun frage ich mich, ob das Problem damit zusammenhängt, dass ein MIME-Typ nicht definiert ist und die Speichermethode nicht funktioniert. Oder sollte ich woanders suchen?
Irgendwelche Ratschläge, Ideen willkommen:)
Das Problem hier ist, dass die $request->files
in der Laravel-Codebasis nicht existiert. Da die Klasse Illuminate\Http\Request
die Klasse Symfony\Component\HttpFoundation\Request
erweitert, ist die files
bezieht sich auf die Klasse Symfony\Component\HttpFoundation\FileBag
, die zufällig viele Symfony\Component\HttpFoundation\File\UploadedFile
s enthält, die nicht über die Speichermethode verfügen.
Einfache Lösung:
Ersetzen Sie $request->files
durch $request->allFiles()
, was Ihnen ein Array von Illuminate\Http\UploadedFile
-Klassen mit der Speichermethode
Wenn Sie weitere Hilfe benötigen, können Sie weitere Fragen im Kommentarbereich stellen
Dies scheint mir kein Problem mit dropzone.js zu sein.
Der Fehler sagt "undefined method ..." im Backend (Laravel), so dass die Methode für Ihr Objekt photo
nicht verfügbar ist.
Sehen Sie sich die Dokumente in Laravel an. ( Ссылка )
Vielleicht kannst du so etwas ausprobieren:
%Vor% Ich hatte ein ähnliches Problem, aber in meinem Fall hatte es einfach keine enctype="multipart/form-data"
-Eigenschaft im <form>
-Tag enthalten. Sobald ich das gemacht habe, hat es funktioniert. Und ich sehe, dass Sie auch <form>
tag nicht haben.
Und nebenbei, in Ihrer portfolioStore()
Methode in Ihrem AdminController
Controller haben Sie,
Bitte tu es nicht!
Sie erstellen zu viele Suchanfragen hier.
Refactor es wie folgt. Sie können mit einer Datenbankabfrage durchkommen:)
%Vor% Und auch in einem früheren Post habe ich geantwortet, wie man Dateien in Laravel convenzinetly speichert. Sie können es hier überprüfen . Es könnte Ihr $filename = $photo->store('photos');
-Teil verbessern.
Hoffe, das würde dir helfen:)
Werfen Sie einfach Ihr $ request-Objekt ab, dropzone kann base64_encoded-Bilder senden, die nicht im Array $ request- & gt; files sind.
An anderer Stelle können Sie verwenden Ссылка
Dies ist ein sehr hilfreiches Paket, um mit Dateien zu arbeiten.
AKTUALISIERT
In Laravel greifen Sie auf hochgeladene Dateien mit der Methode file
zu, die den Namen der Dateieingabe annehmen als ein Parameter. Und von den Dropzonejs-Dokumenten :
Die hochgeladenen Dateien können genauso behandelt werden, als ob es eine HTML-Eingabe wie folgt gegeben hätte:
<input type="file" name="file" />
Versuchen Sie es also:
%Vor%Tags und Links php laravel laravel-5.4 dropzone.js