Laravel-excel: Serialisierung des Schließens fehlgeschlagen: Serialisierung von 'Illuminate\Http\UploadedFile' ist nicht zulässig

Erstellt am 13. Juni 2017  ·  3Kommentare  ·  Quelle: Maatwebsite/Laravel-Excel

[FRAGE]

maatwebsite/excel 2.1, Laravel 5.4

Hallo Leute. Ich versuche, eine Excel-Datei zu importieren, aber ich erhalte die Fehlermeldung "Serialisierung des Schließens fehlgeschlagen: Serialisierung von 'Illuminate\Http\UploadedFile' ist nicht zulässig". Ich habe versucht, einige Fehler zu beheben, aber ich verstehe nicht, warum dieses Problem immer noch auftritt. Dies ist der Quellcode, den ich verwende, um Excel-Dateien zu importieren.

if($request->hasFile('file')){
     $file = $request->file('file')->getRealPath();
     \Excel::filter('chunk')->load($file)->chunk(200, function($result) use ($request){
        foreach ($result as $item) {
           if(collect($item)->has('title') && collect($item)->has('category_id')  && collect($item)->has('file')){
                Content::create([
                     'title' => $item->title,
                     'category_id' => $item->category_id,
                     'file' => $item->file,
                     'reference' => $request->input('reference')
                ]);
           }
        }
       });
      return redirect()->back();
}

Bitte helfen Sie mir, dieses Problem zu lösen.

Hilfreichster Kommentar

Sie können $request an die Closure übergeben, da diese serialisiert und in die Warteschlange gestellt wird. Sie müssen explizite Variablen übergeben.

Versuche dies:

if($request->hasFile('file')){
     $file = $request->file('file')->getRealPath();
    $reference = $request->input('reference');
     \Excel::filter('chunk')->load($file)->chunk(200, function($result) use ($reference){
        foreach ($result as $item) {
           if(collect($item)->has('title') && collect($item)->has('category_id')  && collect($item)->has('file')){
                Content::create([
                     'title' => $item->title,
                     'category_id' => $item->category_id,
                     'file' => $item->file,
                     'reference' => $reference
                ]);
           }
        }
       });
      return redirect()->back();
}

Alle 3 Kommentare

Sie können $request an die Closure übergeben, da diese serialisiert und in die Warteschlange gestellt wird. Sie müssen explizite Variablen übergeben.

Versuche dies:

if($request->hasFile('file')){
     $file = $request->file('file')->getRealPath();
    $reference = $request->input('reference');
     \Excel::filter('chunk')->load($file)->chunk(200, function($result) use ($reference){
        foreach ($result as $item) {
           if(collect($item)->has('title') && collect($item)->has('category_id')  && collect($item)->has('file')){
                Content::create([
                     'title' => $item->title,
                     'category_id' => $item->category_id,
                     'file' => $item->file,
                     'reference' => $reference
                ]);
           }
        }
       });
      return redirect()->back();
}

Danke @patrickbrouwers. Das hat mir das Leben gerettet :+1: .

Danke @patrickbrouwers.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen