2016-07-12 43 views
5

Belirli bir türde ve 2048kb'nin altında olduklarından emin olarak, birden çok karşıya yüklenmiş dosyayı doğrulamam gerekir. Aşağıdaki dizi dizi 'dosyalarında' tüm dosyaları denetlemek için görünmüyor ve sadece dizin nesnesinin içeriğini denetliyor gibi görünüyor, yalnızca geçersiz MIME türü kaydedilmiş dosyaları varsayar.Dizideki birden çok dosyayı doğrulama

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);    } 

} 

cevap

15

Sen laravel 5.2herhangi girdi dizisi gibi dosya dizisi doğrulayabilir. Bu özellik Laravel 5.2'de yeni. Şunları yapabilirsiniz:

$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

Teşekkürler, hile yaptım. Dizideki tüm dosyaların 5 MB'yi geçemeyeceği bir kural yapmanın kestirme bir yolu olup olmadığını merak ediyorum. – LaserBeak

+0

max değerini 'max: 5000' –

+0

olarak değiştirir. Fakat bu resim dosyası başına veya tüm dizi için 5000kb olur mu? Her dosya için tahmin ediyorum – LaserBeak

3

bu deneyin:

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

bu şekilde deneyin.

// 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 
} 
İlgili konular