验证数组中的多个文件

Las*_*eak 17 laravel laravel-5.2

我需要验证多个上传的文件,确保它们是特定类型且低于2048kb.下面似乎没有检查数组'文件'中的所有文件,只是假定发布的无效mime类型的文件,因为它似乎是检查数组对象而不是它的内容.

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

}
Run Code Online (Sandbox Code Playgroud)

im_*_*tsm 39

您可以像Laravel 5.2中的任何输入数组一样验证文件数组.此功能是Laravel 5.2中的新功能.你可以这样做:

$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.. 
}
Run Code Online (Sandbox Code Playgroud)


Ism*_*OUH 5

请试试这个:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


xrk*_*lix 5

我们还可以提出请求并验证它。

    php artisan make:request SaveMultipleImages
Run Code Online (Sandbox Code Playgroud)

这是请求的代码

namespace App\Http\Requests;

use App\Core\Settings\Settings;
use Illuminate\Foundation\Http\FormRequest;

class SaveMultipleImages extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
    public function rules()
    {

        return ['files.*' => "mimes:jpg,png,jpeg|max:20000"];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在控制器中

public function uploadImage(SaveMultipleImages $request) {

     dd($request->all()['files']);
}
Run Code Online (Sandbox Code Playgroud)