2016-07-12 6 views
5

複数のアップロードファイルを検証し、特定のタイプで2048kb未満であることを確認する必要があります。以下は配列 'files'のすべてのファイルをチェックするようには見えず、無効なMIMEタイプの投稿ファイルを想定しています。複数のファイルを配列で検証する

public function fileUpload(Request $request) 
    { 

     $validator = Validator::make($request->all(), [ 
      'files' => 'required|mimes:jpeg,jpg,png', 
     ]); 

     if ($validator->fails()) 
     { 
      return response()->json(array(
       'success' => false, 
       'errors' => $validator->getMessageBag()->toArray() 

      ), 400);    } 

} 

答えて

15

あなたはLaravel 5.2に任意の入力配列のようなファイル配列を検証することができます。この機能はLaravel 5.2で新しく追加されました。あなたは次のようにすることができます:

$input_data = $request->all(); 

$validator = Validator::make(
    $input_data, [ 
    'image_file.*' => 'required|mimes:jpg,jpeg,png,bmp|max:20000' 
    ],[ 
     'image_file.*.required' => 'Please upload an image', 
     'image_file.*.mimes' => 'Only jpeg,png and bmp images are allowed', 
     'image_file.*.max' => 'Sorry! Maximum allowed size for an image is 20MB', 
    ] 
); 

if ($validator->fails()) { 
    // Validation error.. 
} 
+0

ありがとう、トリックをしました。私は配列のすべてのファイルが5MBを超えることができないルールを作るという簡略な方法があるのだろうかと思っていますか? – LaserBeak

+0

maxを 'max:5000'に変更してください –

+0

しかし、それは画像ファイルあたり5000kbか、アレイ全体では5000KBですか?私はファイルごとに推測しています – LaserBeak

3

これを試してください:

public function fileUpload(Request $request) { 
    $rules = []; 
    $files = count($this->input('files')) - 1; 
    foreach(range(0, $files) as $index) { 
     $rules['files.' . $index] = 'required|mimes:png,jpeg,jpg,gif|max:2048'; 
    } 

    $validator = Validator::make($request->all() , $rules); 

    if ($validator->fails()) { 
     return response()->json(array(
      'success' => false, 
      'errors' => $validator->getMessageBag()->toArray() 
     ) , 400); 
    } 
} 
0

は、この方法を試してみてください。

// getting all of the post data 
$files = Input::file('images'); 

// Making counting of uploaded images 
$file_count = count($files); 

// start count how many uploaded 
$uploadcount = 0; 

foreach($files as $file) { 
    $rules = array('file' => 'required'); //'required|mimes:png,gif,jpeg,txt,pdf,doc' 
    $validator = Validator::make(array('file'=> $file), $rules); 
     if($validator->passes()){ 
      $destinationPath = 'uploads'; 
       $filename = $file->getClientOriginalName(); 
       $upload_success = $file->move($destinationPath, $filename); 
       $uploadcount ++; 
     } 
} 

if($uploadcount == $file_count){ 
    //uploaded successfully 
} 
else { 
    //error occurred 
} 
関連する問題