waFile::getMimeType() На рассмотрении

1

Метод работает неверно: он должен возвращать false в случае если формата нет в switch'e, а не 'application/octet-stream'.

2 комментария

  • 0
    info@ravencode.ru info@ravencode.ru Разработчик 24 января 2018 20:40 #

    waFile::extension($file) тоже - точек в названии может быть сколько угодно: pathinfo($filename, PATHINFO_EXTENSION)

    Ненормативная лексика удалена администрацией.

  • +1
    info@ravencode.ru info@ravencode.ru Разработчик 25 января 2018 05:07 #

    Должно быть что-то вроде этого:

    public static function getMimeType($filename)
    {
    	$filename = realpath($filename);
    	$extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    	if (preg_match('/^(?:jpe?g|png|[gt]if|bmp|swf)$/', $extension)) {
    		$file = getimagesize($filename);
    		if (isset($file['mime']))
    			return $file['mime'];
    	}
    	if (class_exists('finfo', false)) {
    		if ($info = new finfo(defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME)) {
    			return $info->file($filename);
    		}
    	}
    	if (ini_get('mime_magic.magicfile') && function_exists('mime_content_type')) {
    		return mime_content_type($filename);
    	}
    	if (!empty($extension)) {
    		return waFile::getMimeTypeByExt($extension);
    	}
    	return false;
    }
    
    public static function getMimeTypeByExt($extension)
    {
    	/**
    	 * array(
    	 *     'jpeg' => array('image/jpeg', 'image/pjpeg'),
    	 *     'jpg' => array('image/jpeg', 'image/pjpeg'),
    	 *     'js' => array('application/javascript')
    	 *     ...
    	 * );
    	 */
    	$mimes = include(wa()->getConfig()->getConfigPath('mimes.php', false));
    	return isset($mimes[$extension]) ? $mimes[$extension][0] : false;
    }

    Добавление новых комментариев к этой теме отключено.