首页 > 解决方案 > 如何使用 laravelcollective 在 Laravel 中上传 excel 文件?

问题描述

使用 package fast excel 导入数据 xlsx 时出现问题。我想输入 excel 文件包括来自不同模型的 ID,如下所示

应用程序/http/clustercontroller:

public function Import($id)
{
    $model = Cluster::findOrFail($id);

    return view('components.Admin.import', compact('model'));      

}

public function StoreImport($id, Request $request)
{

    //VALIDASI
    $this->validate($request, [
        'file' => 'required|mimes:xls,xlsx',
    ]);

    if ($request->hasFile('file')) {
        $file = $request->file('file'); //Get File
        $collection = (new FastExcel)->import($file, function ($line) use ($id) {
            return Soal::create([
                'soal' => $line['Soal'],
                'image' => $line['Image'],
                'A' => $line['A'],
                'B' => $line['B'],
                'C' => $line['C'],
                'D' => $line['D'],
                'E' => $line['E'],
                'kunci' => $line['Kunci'],
                'cluster_id' => $id
            ]); //Import File
        }); 

    }
}

资源/管理员/import.blade.php:

{!! Form::model($model, [
    'route' => $model->exists ? ['cluster.soal.store', $model->id] : 'cluster.soal.create',
    'method' => $model->exists ? 'POST' : 'POST',
    'files' => true
]) !!}


    <div class="form-group">
        <label for="" class="control-label">Cluster</label>
        {!! Form::text('cluster', null, ['class' => 'form-control', 'id' => 'cluster']) !!}
    </div>

    <div class="form-group">
        <label for="" class="control-label">File .xlsx</label>
        {!! Form::file('files') !!}
    </div>

{!! Form::close() !!}

上面的代码显示了表单,但是当我点击提交时没有响应

标签: laravelphpexcellaravelcollectivelaravel-excel

解决方案


您似乎没有在 Controller 方法中返回响应,所以这是我能想到的原因之一。我假设您的模型已存储?

你可以做的事情来改进:

  • 完成导入后返回视图,或者更好的是重定向
  • 用 try/catch 块包围你的代码

推荐阅读