这是我将文件上传到我的数据库的方式,但是当上传的文件格式或类型无效时,我无法处理我的异常。
我可以在没有上传文件时处理异常,但是当文件类型无效或不符合标准时,我能够处理。
我如何完成这项工作?
控制器
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');
}
}
答案 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
}