如何在 Laravel 4 中验证上传的文件数组?我已将其设置为允许多个文件的形式,并且我已经测试了这些文件是否存在于 Input::file('files') 数组中。但是如何验证每个文件?
这是我尝试过的:
$notesData = array(
'date' => Input::get('date'),
'files' => Input::file('files')
);
// Declare the rules for the form validation.
$rules = array(
'date' => 'Required|date_format:Y-m-d',
'files' => 'mimes:jpeg,bmp,png,pdf,doc'
);
// Validate the inputs.
$validator = Validator::make($notesData, $rules);
// Check if the form validates with success.
if ($validator->passes())
{
// Redirect to homepage
return Redirect::to('')->with('success', 'Validation passed!');
}
// Something went wrong.
return Redirect::to(URL::previous())->withErrors($validator)->withInput(Input::all());
我希望 Validator 抱怨在数据数组中传递文件数组,但即使我发送的文件是 mp3,它也只是通过了验证。当我尝试上传多个文件时,它给出了一个不相关的错误,即需要日期字段(尽管日期字段是自动填充的)。
我对 Laravel 很陌生。我该怎么做才能让它工作?
更新:我发现问题的一部分是我的upload_max_filesize和post_max_size,我修复了。我还尝试将文件动态添加到数组中,如下所示:
$notesData = array(
'date' => Input::get('date')
);
$i=0;
foreach(\Input::file('files') as $file){
$notesData['file'.++$i] = $file;
}
// Declare the rules for the form validation.
$rules = array(
'date' => 'Required|date_format:Y-m-d'
);
for($j=1; $j<=$i; $j++){
$rules['file'.$j] ='mimes:jpeg,bmp,png,doc';
}
但现在我收到以下错误:
'Symfony\Component\HttpFoundation\File\UploadedFile' 的序列化是不允许的
我迷路了。知道如何解决这个问题吗?