Получение загружаемого изображения MIME-тип является application / octet-stream - PullRequest
2 голосов
/ 03 апреля 2012

При загрузке файла я получаю mime-тип в виде application / octet-stream.

Я узнал, что Zend_Frameworks пытается определить mimetype двумя способами:

Сначала он пытаетсячтобы использовать расширение PECL FILEINFO (которое установлено не на каждом сервере), если расширение не установлено, оно пытается использовать mime_content_type (функция php).Однако эта функция устарела с версии php 5.3

Так что же теперь делать?Как я могу быть уверен, что пользователь, загружающий файл, является только изображением, а не чем-то другим?Как определить тип загруженного файла MIME?

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Для изображений вы также можете положиться на exif_imagetype, но я бы порекомендовал вам установить finfo.

См. this для примера реализации.

0 голосов
/ 03 апреля 2012

Используйте Zend_File_Transfer validators , чтобы исключить типы, которые вам не нужны:

    $upload = new Zend_File_Transfer();

   // Does not allow MIME type application/pdf and application/zip .
   $upload->addValidator('ExcludeMimeType', false, array('application/pdf',
                                                  'application/zip'));

или вы также можете использовать IsImage validator, который проверяет, является ли переданный файл файлом изображения:

$upload = new Zend_File_Transfer();

// Checks whether the uploaded file is a image file
$upload->addValidator('IsImage', false);
...