Dropzone kein gültiger MIME-Typ im Backend Laravel?

8

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 ()

auf

Dies 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:)

    
Goowik 04.09.2017, 07:43
quelle

5 Antworten

2

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

geben soll

Wenn Sie weitere Hilfe benötigen, können Sie weitere Fragen im Kommentarbereich stellen

    
Paras 07.09.2017, 18:05
quelle
2

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%     
dns_nx 04.09.2017 08:39
quelle
2

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.

%Vor%

Und nebenbei, in Ihrer portfolioStore() Methode in Ihrem AdminController Controller haben Sie,

%Vor%

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:)

    
Gayan 13.09.2017 16:04
quelle
1

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.

    
mikrafizik 07.09.2017 13:10
quelle
1

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%     
Don't Panic 07.09.2017 08:48
quelle