Laravel-excel: Falha na serialização do fechamento: a serialização de 'Illuminate \ Http \ UploadedFile' não é permitida

Criado em 13 jun. 2017  ·  3Comentários  ·  Fonte: Maatwebsite/Laravel-Excel

[PERGUNTA]

maatwebsite / excel 2.1, Laravel 5.4

Ola pessoal. Estou tentando importar um arquivo do Excel, mas recebo um erro ao iniciar que "Falha na serialização do fechamento: a serialização de 'Illuminate \ Http \ UploadedFile' não é permitida". Tentei resolver alguns problemas, mas não entendo por que esse problema ainda ocorre. Este é o código-fonte que uso para lidar com a importação de arquivos do Excel.

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 me ajude a resolver este problema.

Comentários muito úteis

Você não pode passar $request para o encerramento, pois ele é serializado e enfileirado. Você tem que passar variáveis ​​explícitas.

Experimente isto:

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 comentários

Você não pode passar $request para o encerramento, pois ele é serializado e enfileirado. Você tem que passar variáveis ​​explícitas.

Experimente isto:

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

Obrigado @patrickbrouwers. Isso salvou minha vida: +1:.

Obrigado @patrickbrouwers.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

daraghoshea picture daraghoshea  ·  3Comentários

amine8ghandi8amine picture amine8ghandi8amine  ·  3Comentários

gamevnlc picture gamevnlc  ·  3Comentários

kevinRR picture kevinRR  ·  3Comentários

contifico picture contifico  ·  3Comentários