Я использую CakePHP 2.3.8 и пытаюсь проверить загрузку изображения с помощью CakePHP, но Cake дает мне проблемы с проверкой. Я знаю, что проверка выполняется, потому что, если я удалю конкретное расширение из правил проверки, я затем получаю сообщение об ошибке проверки. (EX: удалите 'jpg' из списка проверки, и я загружаю файл .jpg, затем он показывает сообщение об ошибке).
'image' => array( 'extension' => array( 'rule' => array('extension', array('png','jpg','jpeg', 'gif')), 'message' => 'Only jpeg, png and gif images are supported', ) ),
Вот что я имею в своем контроллере
if($this->request->is('post')){ $this->Setting->set($this->request->data); if($this->Setting->validates() == true){ $this->Session->setFlash('success'); } else{ $this->Session->setFlash('fail'); } }
Если я загружу, скажите image2.jpg Я получаю сообщение об ошибке, но я не получаю сообщение проверки. Если я удалю «.jpg» из списка расширений и загрузим файл jpg, я получу сообщение «fail» и сообщение об ошибке проверки.
Когда я отлаживаю данные this-> request->, я получаю следующий ответ
array( 'Setting' => array( 'id' => '5', //hidden field 'current_image' => '2_52547d56-1d80-410e-b739-09cecbdd56cb', //hidden field 'image' => array( 'name' => 'IMG_4385.JPG', 'type' => 'image/jpeg', 'tmp_name' => '/Applications/XAMPP/xamppfiles/temp/phpilL54j', 'error' => (int) 0, 'size' => (int) 1608456 ) ) )
Как я уже сказал, когда я удаляю расширение jpg из правил проверки, появляется сообщение. Я знаю, что это, вероятно, «нахождение» изображения в опубликованных данных.
Изменить – я понял проблему
Представление, с которым я работаю, имеет 2 формы. Один для отправки изображений и один для ввода текста. В модели установки у меня есть проверка для ввода текста и изображения. Несмотря на то, что он полностью является отдельным форматом, он пытается проверить эти текстовые входы, но он не получает никакой информации для них в отправляемых данных. Я изменил запрос проверки, чтобы только проверить изображение, и оно сработало
if($this->Setting->validates(array('fieldList' => array('image'))) == true){...