Проверка загрузки CakePhp

Я пытался заставить это работать в течение нескольких часов, бесчисленное количество поисков в Google не привело ни к чему полезному.

Мне было интересно, есть ли способ проверить переменные внутри файла формы. Итак, как и в форме «загрузить», я хочу убедиться, что загрузка [имя] не пуста. Могу ли я сделать это вообще с проверкой модели Cakephp?


person James McDonnell    schedule 22.11.2012    source источник
comment
Вы изучали использование плагина для загрузки файла торта? Загрузка Meio проста и удобна. Медиа-плагин Cakephp, по-видимому, великолепен, но сложен в работе.   -  person joshua.paling    schedule 23.11.2012


Ответы (2)


В 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;
    }   
?>
person Suman Singh    schedule 23.11.2012

Ответ @Sunman Singh больше не соответствует действительности.

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, если $check является array и содержит этот ключ:

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

person Yann Chabot    schedule 28.09.2016