简体   繁体   English

Phalcon 4 验证多部分/表单数据多

[英]Phalcon 4 validation multipart/form-data multiple

Is it possible to configure the file validator of Phalcon4, where it can validate multiple uploaded files?是否可以配置 Phalcon4 的文件验证器,它可以验证多个上传的文件?

I cannot find any documentation about multiple files upload, just file upload with different form fields: https://docs.phalcon.io/4.0/en/api/phalcon_validation#validation-validator-file我找不到有关多个文件上传的任何文档,只是使用不同表单字段的文件上传: https://docs.phalcon.io/4.0/en/api/phalcon_validation#validation-validator-file

I can validate files which are uploaded one by one, but I need the form to handle multiple uploaded files at once.我可以验证一个一个上传的文件,但我需要表单来一次处理多个上传的文件。

Here is my code:这是我的代码:

HTML HTML

<input type="file" id="formFile" name="media[]" multiple>

Controller Controller

$validation = new FileUploadValidation();
$validation->validate($_FILES);

FileUploadValidation.php FileUploadValidation.php

<?php

namespace App\Validator;

use Phalcon\Validation;
use Phalcon\Validation\Validator\File as FileValidator;

class FileUploadValidation extends Validation
{
    public function initialize()
    {
        $this->add(
            ['media'],
            new FileValidator(
                [
                    "maxSize"              => "2M",
                    "messageSize"          => ":field exceeds the max file size (:size)",
                    "allowedTypes"         => [
                        "image/jpeg",
                        "image/png",
                    ],
                    "messageType"          => "Allowed file types are :types",
                ]
            )
        );
    }
}

You can iterate on each file and validate it:您可以迭代每个文件并对其进行验证:

$validation = new FileUploadValidation();
   
foreach ($this->request->getUploadedFiles() as $file) { 
    $messages[] = $validation->validate($file);
}

if (count($messages)) {
  ...
}

Also, in your add definition you do not need to place an array, just a string (replace ['media'] with 'media' :此外,在您的add定义中,您不需要放置一个数组,只需一个字符串(将['media']替换为'media'

$this->add(
        'media',
        new FileValidator([...]}
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM