【问题标题】:validation on a input file in cakephp验证 cakephp 中的输入文件
【发布时间】:2010-07-06 10:58:18
【问题描述】:

在 cakephp 中,我试图检查文件输入字段是否附加了文件,如果没有则输出错误。我已经在其他领域做到了这一点,但似乎无法让它在该领域发挥作用。

这是模型

数组('notempty'), 'uploadeduploaded_file' => 数组('notempty') ); ?>

这是我的 ctp 文件

<?php echo $form->input('Uploaded.uploaded_file', array('type' => 'file', 'label' => 'Upload file', "label" => false)); ?>

我猜测它一定与我应该在模型中调用的字段有关,但是我尝试了各种组合,无法使其工作。

任何帮助将不胜感激

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    cakePHP optional validation for file upload

    这可能对你有帮助

    var $validate = array(
                'imageupload' => array(
                    'checksizeedit' => array(
                        'rule' => array('checkSize',false),
                        'message' => 'Invalid File size',
    
                    ),
                    'checktypeedit' =>array(
                        'rule' => array('checkType',false),
                        'message' => 'Invalid File type',
    
                    ),
                    'checkuploadedit' =>array(
                        'rule' => array('checkUpload', false),
                        'message' => 'Invalid file',
    
                    ),
    );
    
    
    
    function checkUpload($data, $required = false){
            $data = array_shift($data);
            if(!$required && $data['error'] == 4){
                return true;
            }
            //debug($data);
            if($required && $data['error'] !== 0){
                return false;
            }
            if($data['size'] == 0){
                return false;
            }
            return true;
    
            //if($required and $data)
        }
    
        function checkType($data, $required = false){
            $data = array_shift($data);
            if(!$required && $data['error'] == 4){
                return true;
            }
            $allowedMime = array('image/gif','image/jpeg','image/pjpeg','image/png');
            if(!in_array($data['type'], $allowedMime)){
                return false;
            }
            return true;
        }
    
        function checkSize($data, $required = false){
            $data = array_shift($data);
            if(!$required && $data['error'] == 4){
                return true;
            }
            if($data['size'] == 0||$data['size']/1024 > 2050){
                return false;
            }
            return true;
        }
    

    【讨论】:

    • 完成这项工作,但是当表单中没有选择文件时,程序不会验证该字段。也许这是因为我没有将文件存储在我的数据库中(我只是存储它在目录中)。有人有解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 2011-02-25
    • 1970-01-01
    • 2018-01-10
    • 2013-09-06
    • 1970-01-01
    相关资源
    最近更新 更多