2015-08-08 2 views
1

Я даю правило проверки для типов файлов изображения:изображений

array('employeedetails_photo', 'file', 'types' => 'jpg,gif,png', 'allowEmpty' => true,'on' => 'insert', 'on' => 'update'), 

Но, проблема в том, что если расширение .doc файла изменяется на .docx.jpg и загрузить это как работник фото также принимается , Как дать подтверждение для этой проблемы в yii?

+0

Попробуйте http://www.bitrepository.com/how-to-validate-an-image-upload.html – vietnguyen09

ответ

1

Лучший способ проверки изображений - воссоздать их с помощью GD imagecreatefrom* (или Imagick) и сохранить/заменить обработанное изображение. Самый простой пример

public function rules(){ 
    return array(
    array('employeedetails_photo', 'validateImage') 
); 
} 

public function validateImage($attribute){ 
    $file = CUploadedFile::getInstance($this, $attribute); 
    if (!$file) { 
    return; 
    } 
    // http://php.net/manual/en/function.imagecreatefromstring.php 
    // These types will be automatically detected if your build of PHP supports them: JPEG, PNG, GIF, WBMP, and GD2 
    $gd = @imagecreatefromstring(file_get_contents($file->getTempName())); 
    if ($gd === false) { 
    $this->addError($attribute, 'Image is corrupted'); 
    } 
} 
+0

Он работает .... Спасибо так много .... ..................... – Arya

+0

это для правильного изображения. Если вы подтвердите файл doc, как это сделать, что делать? – Arya

+0

Используйте собственный CFileValidator и проверьте как расширения, так и MIME-типы. 'array ('employeedetails_photo', 'file', 'mimeTypes' => [], 'types' => [])' @Arya – SiZE