蛋糕Php上传验证



我一直在尝试让它工作几个小时,无数的谷歌搜索都没有产生任何有用的结果。

我想知道是否有办法验证表单文件输入内部的变量。所以就像在"上传"表单中一样,我想确保上传[名称]不为空。我可以用 Cakephp 的模型验证来做到这一点吗?

在 Cakephp 中没有办法验证文件输入字段。

您可以通过自定义验证规则来执行此操作,如以下示例所示

对于查看文件

<?php
    echo $this->Form->file('image');
    echo $this->Form->error('image');
?>

对于模型文件

<?php
    public $validate = array(
        'image' => array(
            'rule' => array('chkImageExtension'),
            'message' => 'Please Upload Valid Image.'
        )
    );

    public function chkImageExtension($data) {
       $return = true; 
       if($data['image']['name'] != ''){
            $fileData   = pathinfo($data['image']['name']);
            $ext        = $fileData['extension'];
            $allowExtension = array('gif', 'jpeg', 'png', 'jpg');
            if(in_array($ext, $allowExtension)) {
                $return = true; 
            } else {
                $return = false;
            }   
        } else {
            $return = false; 
        }   
        return $return;
    }   
?>
@Sunman辛

格的回答不再是真的。

static Validation::extension(mixed $check, array $extensions = array('gif', 'jpeg', 'png', 'jpg'))

此规则检查有效的文件扩展名,如 .jpg.png 。允许 多个扩展,以array形式传递它们。

public $validate = array(
  'image' => array(
    'rule' => array(
          'extension',
           array('gif', 'jpeg', 'png', 'jpg')
      ),
      'message' => 'Please supply a valid image.'
  )
);

static Validation::fileSize($check, $operator = null, $size = null)

此规则允许您检查文件大小。您可以使用$operator 确定要使用的比较类型。所有运营商 这里也支持comparison()支持。此方法将 $_FILES通过从 tmp_name密钥,如果$checkarray并包含该密钥:

public $validate = array(
  'image' => array(
      'rule' => array('fileSize', '<=', '1MB'),
      'message' => 'Image must be less than 1MB'
  )
);

有关参考资料,请参阅下面的链接。好吧,我建议编写自己的函数以提高安全性,但这些当然可以为您节省一些时间

http://book.cakephp.org/2.0/en/models/data-validation.html#Validation::extension

相关内容

  • 没有找到相关文章

最新更新