如何在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' 进行序列化
我现在无法解决这个问题。您有什么建议?