Laravel-excel: Error en la serialización del cierre: no se permite la serialización de 'Illuminate \ Http \ UploadedFile'

Creado en 13 jun. 2017  ·  3Comentarios  ·  Fuente: Maatwebsite/Laravel-Excel

[PREGUNTA]

maatwebsite / excel 2.1, Laravel 5.4

Hola chicos. Estoy tratando de importar un archivo de Excel, pero aparece un error que comienza con el mensaje "Error en la serialización del cierre: la serialización de 'Illuminate \ Http \ UploadedFile' no está permitida". He intentado solucionar algunos problemas, pero no entiendo por qué sigue ocurriendo este problema. Este es el código fuente que utilizo para manejar archivos de Excel de importación.

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

Por favor ayúdame a resolver este problema.

Comentario más útil

No puede pasar $request al cierre, ya que se serializa y se pone en cola. Tienes que pasar variables explícitas.

Prueba esto:

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

Todos 3 comentarios

No puede pasar $request al cierre, ya que se serializa y se pone en cola. Tienes que pasar variables explícitas.

Prueba esto:

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

Gracias @patrickbrouwers. Eso me salvó la vida: +1:.

Gracias @patrickbrouwers.

¿Fue útil esta página
0 / 5 - 0 calificaciones