Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证Zend Framework 2中的文件_Php_Validation_Zend Framework2 - Fatal编程技术网

Php 验证Zend Framework 2中的文件

Php 验证Zend Framework 2中的文件,php,validation,zend-framework2,Php,Validation,Zend Framework2,检查下面的代码,我从上传中得到文件,我想验证它。我检查文件扩展名、大小和MIME。若我逐个检查,结果是正确的,但当我使用$adapter->setValidators()时,结果是假阳性 ZF2验证器是以一种奇怪的方式工作,还是我不明白应该如何使用它 代码 我希望我正确理解了问题的含义:)您可以使用addValidator()方法,第二个参数是$breakChainOnFailure。对于验证程序链来说,这种行为是正确的。如果您没有显式中断,将执行每个验证器。Hmm这很有帮助,我对代码做了一些更

检查下面的代码,我从上传中得到文件,我想验证它。我检查文件扩展名、大小和MIME。若我逐个检查,结果是正确的,但当我使用$adapter->setValidators()时,结果是假阳性

ZF2验证器是以一种奇怪的方式工作,还是我不明白应该如何使用它

代码
我希望我正确理解了问题的含义:)您可以使用addValidator()方法,第二个参数是$breakChainOnFailure。对于验证程序链来说,这种行为是正确的。如果您没有显式中断,将执行每个验证器。

Hmm这很有帮助,我对代码做了一些更改,现在它可以正常工作(对我来说)。Thx,享受您的第一声誉积分:)
<?php    
    $data = array_merge_recursive(
        $this->getRequest()->getPost()->toArray(),          
        $this->getRequest()->getFiles()->toArray()
    );

    /* set mime on server side */
    $finfo = new \finfo(FILEINFO_MIME);             
    $mimeinfo = explode(';', $finfo->file($data['upload_image']['tmp_name']));
    $data['upload_image']['type'] = $mimeinfo[0];

    $adapter = new \Zend\File\Transfer\Adapter\Http(); 

    $validatorSize = new \Zend\Validator\File\Size(10);
    $validatorExt = new \Zend\Validator\File\Extension('gif,jpg,jpeg,png');
    $validatorMime = new \Zend\Validator\File\MimeType('image/gif,image/jpg,image/jpeg,image/png');

    $results = array();
    $results['size'] = $validatorSize->isValid($data['upload_image']);
    $results['ext'] = $validatorExt->isValid($data['upload_image']);
    $results['mime'] = $validatorMime->isValid($data['upload_image']);

    $adapter->setValidators(array(
        $validatorSize,
        $validatorExt,
        $validatorMime,
    ), $data['upload_image']);

    $results['adapter'] = $adapter->isValid();

    \Zend\Debug\Debug::dump($results);
?>
array(4) {
  ["size"] => bool(false)
  ["ext"] => bool(true)
  ["mime"] => bool(false)
  ["adapter"] => bool(true)
}