Validator Zend_Validate_File_IsImage не работает правильно - PullRequest
3 голосов
/ 11 августа 2010

Я пытаюсь использовать следующий валидатор ZF:

$ isImageValidator = new Zend_Validate_File_IsImage (array ('headerCheck' => true));

(я не хочу использовать fileInfo или mimeMagic)

Но даже когда выбрано изображение, валидатор возвращает следующее:

Файл 'image.png' не является изображением, 'application / octet-stream' обнаружен

(Когда я просматриваю глобальный массив $ _FILES, он обнаруживает 'image / png') Почему ???

Помогите мне, пожалуйста ...

Ответы [ 2 ]

0 голосов
/ 22 января 2015

Попробуйте:

$transfer = new Zend_File_Transfer_Adapter_Http();

// $transfer->addValidator(new Zend_Validate_File_IsImage());

$transfer->addValidator(new Zend_Validate_Callback(function($filepath, $file) use($transfer){

    $mimes = array('image/bmp',  'image/c',  'image/cgm',  'image/fif',  'image/gif',  'image/jpeg',  'image/jpm',  'image/jpx',  'image/jp2',  'image/naplps',  'image/pjpeg',  'image/png',  'image/svg',  'image/svg+xml',  'image/tiff',  'image/vnd.adobe.photoshop',  'image/vnd.djvu',  'image/vnd.fpx',  'image/vnd.net-fpx',  'image/x-cmu-raster',  'image/x-cmx',  'image/x-coreldraw',  'image/x-cpi',  'image/x-emf',  'image/x-ico',  'image/x-icon',  'image/x-jg',  'image/x-ms-bmp',  'image/x-niff',  'image/x-pict',  'image/x-pcx',  'image/x-portable-anymap',  'image/x-portable-bitmap',  'image/x-portable-greymap',  'image/x-portable-pixmap',  'image/x-quicktime',  'image/x-rgb',  'image/x-tiff',  'image/x-unknown',  'image/x-windows-bmp',  'image/x-xpmi');

    if(!in_array($file['type'], $mimes)) {

        $transfer->addError(sprintf("O arquivo não é uma imagem: '%s' detectado", $file['type']));  
        return false;
    }
    return true;
}));
0 голосов
/ 11 августа 2011

У меня такая же проблема на моем сервере. По умолчанию Zend_Validate_File_MimeType, который является базовым классом isImage, использует один из файлов, которые определяют типы пантомимы в вашей системе.

В моем случае этот файл был /usr/share/file/magic.mime

Я только что удалил все файлы, которые были перечислены в MimeType:

protected $_magicFiles = array(
    '/usr/share/misc/magic',
    '/usr/share/misc/magic.mime',
    '/usr/share/misc/magic.mgc',
    '/usr/share/mime/magic',
    '/usr/share/mime/magic.mime',
    '/usr/share/mime/magic.mgc',
    '/usr/share/file/magic',
    '/usr/share/file/magic.mime',
    '/usr/share/file/magic.mgc',
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...