处理文件上传异常 - Laravel

时间:2017-12-06 09:45:27

标签: php laravel exception

这是我将文件上传到我的数据库的方式,但是当上传的文件格式或类型无效时,我无法处理我的异常。

我可以在没有上传文件时处理异常,但是当文件类型无效或不符合标准时,我能够处理。

我如何完成这项工作?

控制器

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


       $country= Country::all()->where('id',$id)->first();


           if($request->file('imported-file'))
           {
                     $path = $request->file('imported-file')->getRealPath();
                     $data = Excel::load($path, function($reader)
               {
                     })->get();

               if(!empty($data) && $data->count())
               {
                 foreach ($data->toArray() as $row)
                 {
                   if(!empty($row))
                   {
                     $dataArray[] =
                     [
                       'name' => $row['name'],

                     ];
                   }
    else {
            return redirect('admin')->with('error','File format Error');

         }
               }

               if(!empty($dataArray))
               {
                $country->teams()->createMany($dataArray);       
                 return redirect('admin')->with('status','Countries successfully added');

                }
              }
            }
else {
            return redirect('admin')->with('error','No file was uploaded');

         }

        }

3 个答案:

答案 0 :(得分:1)

Laravel's documentation开始,您只能使用mime验证规则

接受某种类型的文件
        'file' => 'required | mimes:application/vnd.ms-excel', 

mime-type application/vnd.ms-excel将匹配这些文件扩展名xls xlm xla xlc xlt xlw

答案 1 :(得分:0)

我在我的一个项目中上传了excel文件。希望这会对你有所帮助: -

$file = Input::file('imported-file');
Excel::load($file ,function($reader){
                    $reader->each(function($sheet){
                        YourMOdelName::firstOrCreate($sheet->toArray());
                    });
                });

YourModelName 是您的表名,假设表格是用户,那么您必须在这种情况下定义用户 ..... 通过这种方式,您可以获得上传文件的扩展: -

$ext= Input::file('imported-file')->getClientOriginalExtension();
echo $ext; //print the extension here

希望它会有所帮助!

答案 2 :(得分:0)

好的,我通过查看laravel文档以一种非常简单的方式解决了这个问题。所以这就是我刚刚添加的内容

if(($request->file('imported-file')->getClientOriginalExtension() != 'xls, xlm, xla ,xlc, xlt, xlw'))
        {

        }    
else {

   //process the file

}