Laravel Input :: hasfile()是否在输入数组上工作?

MAZ*_*UMA 2 file-upload input laravel

我正在使用一个带有多个文件输入的表单的Laravel项目。如果我提交的表单的第一个输入为空,而所有其他输入都带有文件,则hasFile返回false。仅当第一个输入包含文件时,它才会返回true。

if(Input::hasfile('file'))
{
 // do something
}
Run Code Online (Sandbox Code Playgroud)

这是通过Input :: file('file)的输入数组。小图像输入为空,大图像输入为空。我希望它查看整个数组,如果存在任何文件,则继续执行“执行某些操作”。

Array
(
    [small] => 
    [large] => Symfony\Component\HttpFoundation\File\UploadedFile Object
        (
            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image_name.jpg
            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
            [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 44333
            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
            [pathName:SplFileInfo:private] => /Applications/MAMP/tmp/php/phpHILgX2
            [fileName:SplFileInfo:private] => phpHILgX2
        )

)
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?还是应该查看整个阵列?

The*_*pha 5

摘自:

/**
 * Determine if the uploaded data contains a file.
 *
 * @param  string  $key
 * @return bool
 */
public function hasFile($key)
{
    if (is_array($file = $this->file($key))) $file = head($file);

    return $file instanceof \SplFileInfo;
}
Run Code Online (Sandbox Code Playgroud)

似乎它只检查数组中的第一个,head返回数组中的第一个项目。


Ron*_*hah 5

您可以使用数组键进行检查,例如如下所示:HTML输入类型File Element:

<input type="file" name="your_file_name[]" />
Run Code Online (Sandbox Code Playgroud)

Laravel 5: $request->hasFile('your_file_name.'.$key)

Laravel 4.2: Input::hasFile('your_file_name.'.$key)