2017-12-06 12 views
1

これは私のデータベースにファイルをアップロードする方法ですが、アップロードされたファイルが無効な形式またはタイプの場合は例外を処理できません。ファイルのアップロード例外を処理する - Laravel

ファイルがアップロードされていないときに例外を処理できますが、ファイルの種類が無効であるか、標準に適合していないときは処理できません。

どうすればいいですか?私は私のプロジェクトの一つでExcelファイルをアップロードしている

コントローラ

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

無効なタイプは何ですか?アップロードするファイルは –

+0

ですか? – kunal

+0

@SapneshNaik、私はexcelファイルをアップロードします。だから、ユーザーが別のフォーマットをアップロードするときに、私はその例外を処理する必要があります – pogba

答えて

0

。あなたが得ることができるこの方法から ..... YourModelNameは、あなたが、その場合にはユーザーを定義する必要がありますので、テーブルがユーザーであれば、あなたのテーブル名が想定され

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

- :この意志はあなたがお役に立てば幸いですアップロードファイルの展開: -

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

希望すると助かります! Laravel's documentationから

1

、あなたはMIMEの検証規則を使用してファイルの唯一の特定のタイプを受け入れることができ、

 'file' => 'required | mimes:application/vnd.ms-excel', 

MIMEタイプapplication/vnd.ms-excelわかりました私は非常にこれを解決しxls xlm xla xlc xlt xlw

0

これらのファイルの拡張子に一致しますlaravelのドキュメントをチェックすることで簡単に行えます。だからここに私がちょうど追加したものです

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

     }  
else { 

    //process the file 

} 
+0

確認方法それがExcelまたは他の形式の場合は? – kunal

+0

@kunal answer updated – pogba

+0

ya now fine ...私はあなたにもこのソリューションを提供しています(y)私の答えを見て@pogba – kunal