Frage von media2beBusiness Profil - Light, 20

Laravel > Foto Upload?

Hi,

ich versuche schon die ganze Zeit ein JPG mit Laravel 5.3 hochzuladen, aber ständig kommt ein Fatal Error: Call to a member function store() on string!

Ich folge genau diesem Beispiel: laravel.com/docs/5.3/requests#storing-uploaded-files (Sorry, leider darf ich keinen Link mehr einfügen, da meine Linkanzahl für diesen Monat schon verbraucht ist).

Meine Controller Klasse ist wie folgt: 

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function doFileUpload(Request $request) {
        $path = $request->photo->store('uploads');
        return $path;
    }
}

Kann mir jemand helfen? Ich verzweifele sonst noch... > soll natürlich ein > sein. Irgendwie ersetzt er mir das immer automatisch als > wenn ich es im Code-Tag schreibe.

Danke!

Gruß Björn

Antwort
von TenMedia, Business, 10

Hallo media2be!

Die Fehlermeldung besagt, dass dein Framework nur einen String erkennt, mit dem erstmal keine Funktionen "angestellt" werden können. Basierend auf dem was du an Code zeigst, gehe ich davon aus, dass du auf das Filesystem von deinem Framework zurückgreifen musst. Du kannst die Datei nicht als String direkt abrufen, da eine automatische Konvertierung nicht stattfindet. Ohne es jetzt getestet zu haben, würde ich davon ausgehen, dass deine Code etwa so aussehen sollte: 

$path = $request->file('photo')->store('dein/gewuenschter/speicher/pfad/');

Wenn du mit der Variable nichts weiter anstellst, kannst du sie auch gleich zurückgeben. 

return $request->file('photo')->store('dein/gewuenschter/speicher/pfad/');

Und mhochm hat auch Recht. Du musst zum einen jedem Formular, welches Dateien übermitteln soll, entsprechend markieren. Das machst du, indem du, wie von ihm/ihr bereits gesagt, nach dem Opening Tag des Formulars folgendes einfügst:

enctype = "multipart/form-data"

Zusätzlich solltest du dich vergewissern, wie dein Inputfeld heißt. Oben gehst du davon aus, dass dein Feld "photo" heißt. 

<input name="photo" type="file" accept="etc..." />

Gib Bescheid, ob es geklappt hat. Sonst brauche ich etwas mehr Infos bzgl. der Fehlermeldung.

Antwort
von mhochm, 15

Hi, ich bin mir nicht ganz sicher, aber ich glaube dass das Problem an deiner HTML-Programmierung liegt. Hast du in deinem

<

form action="..." method="post" enctype="multipart/form-data"> hast du diese Attribute alle gesetzt?

Beste Grüße und Happy Coding!

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten