如何为表单中的所有输入文件制作 laravel 验证器

How to make laravel validator for all input files in form

我尝试为表单中的所有输入类型文件添加验证器。我不使用输入类型文件“多个”。 加载页面时,我的表单只有一个输入文件。然后用户可以通过单击“添加”按钮添加其他文件。 所以我需要为所有动态添加的输入类型文件制定验证规则。 也许这个问题看起来很愚蠢,但我不想输入多个,老板觉得它“不友好”。 我怎样才能做到这一点? 谢谢

您可以添加多个动态输入字段,例如:

<input name="image[]" type="file">
<input name="image[]" type="file">

在您的控制器上,您将收到它作为一个 数组,因此您可以像这样验证:

$data = $request->validate([
    "image"    => "required|array",  // array validation
    "image.*"  => "required|image|mimes:png,gif,jpeg,jpg", // field validation from the array
]);

只需为添加的每个输入文件设置一个名称,并在名称末尾添加 []

<input name="file_input[]" type="file">
<input name="file_input[]" type="file">
<input name="file_input[]" type="file">
<input name="file_input[]" type="file">

在你的控制器方法中首先将它验证为一个数组 然后验证内容

如果您想要至少一个文件,请将 min:1 添加到验证程序选项中

$data = $request->validate([
    "file_input"    => "required|array|min:1",  // array validation atleast one file is needed
    "file_input.*"  => "required|file|mimes:png,gif,jpeg,jpg,pdf,doc", // field validation from the array
]);

其他

$data = $request->validate([
    "file_input"    => "required|array",  // array validation
    "file_input.*"  => "required|file|mimes:png,gif,jpeg,jpg,pdf,doc", // field validation from the array
]);