2010-08-11 3 views
3

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

$ isImageValidator = новый Zend_Validate_File_IsImage (массив ('headerCheck' => верно));

(я don'n хочу использовать FILEINFO или mimeMagic)

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

Файл 'image.png' нет изображения «приложение/octet- stream '

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

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

ответ

0

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

В моем случае этот файл был /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', 
); 
0

Try:

$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; 
})); 
Смежные вопросы