Проверка за качване на CakePhp

Опитвах се да накарам това да работи от куп часове, безбройните търсения в Google не доведоха до нищо полезно.

Чудех се дали има начин за валидиране на променливите вътре във формуляр fileinput. И така, както във формуляр "качване", искам да се уверя, че upload[name] не е празен. Мога ли изобщо да направя това с валидирането на модела на 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