Функция определения формата файла

212
.
Писал функцию для своей CMS и решил поделится ею. Вобщем описание в комментарии перед функцией:

/***********************Получение формата файла***********************/
/*--------------------
$fileName -- имя файла
$check -- определяет нужно ли делать проверку на правильность формата (по умолчанию проверка включена)
$formats -- определяет массив допустимых форматов (если не указывать, будет использоватся $possibleFileFormats)
--------------------*/
function fileFormat($fileName, $check = TRUE, $formats = FALSE)
{
  global $possibleFileFormats;
  if(!$formats)
    $formats = $possibleFileFormats;
  $fileName = explode('.', $fileName) ;
  $count = count($fileName);
  if($count != 2)
    $out = FALSE;
  else
  {
  $format = strtolower($fileName[--$count]);
    if($check)
    {
        if(in_array($format, $formats))
            $out = $format;
        else
            $out = FALSE;
    }
    else
        $out = $format;
  }
  return $out;
}
/*********************************************************************/
.
Если вам нужно использовать другой массив допустимых форматов поумолчанию, то отредактируйте 2 и 3 строки.
.
Atmas
для особо мерзких, мы особо дерзкие
рассчитана на одну точку в названии файла, не гуд...
.
Z3RO
Atmas (30.07.2011/08:29)
рассчитана на одну точку в названии файла, не гуд...
Это зделано из соображений безопасности. Впринципе можно зделать удаление всех точек кроме последней.
.
Кадило крутится, лавэха мутится
Зачем извращаться и писать какие-то сверх проверки на типы?
Есть же стандартная функция которая справляется с этой задачей намного лучше.
$filetype = pathinfo($filename, PATHINFO_EXTENSION);
.
Кадило крутится, лавэха мутится
Z3RO (30.07.2011/08:31)
Это зделано из соображений безопасности. Впринципе можно зделать удаление всех точек кроме последней.
Какие-то стрёмные соображения безопасности. Это типа от двойного расширения? Это ж где вы хост с таким апачем видели который ещё хавает двойное расширение? Ыы.
.
Simba (30.07.2011/08:54)
Зачем извращаться и писать какие-то сверх проверки на типы?
Есть же стандартная функция которая справляется с этой задачей намного лучше.
[php]$filetype = pathinfo($filename, PATHINFO_EXTENSION);[/p
Я плохо знаком с функциями для работы с файловой системой в РНР.
.
ramzes
//-------------      Функция определения типа файла         -----------------//

function FileExtension($file, $name=''){
$goodmime= array('image/jpeg', 'image/png', 'image/gif', 'image/bmp',
'text/plain', 'application/pdf',
'text/vnd.sun.j2me.app-descriptor', 'application/java-archive',
'audio/x-wav', 'audio/x-ms-wma', 'audio/mpeg', 'video/3gpp', 'video/x-ms-video', 'video/x-ms-wmv', 'video/mpeg',
'application/x-zip-compressed', 'application/x-rar-compressed', 'application/x-gtar', 'application/x-gzip');
$submime = array('rar'=>'application/x-rar-compressed', 'zip'=>'application/x-zip-compressed', 'mp3'=>'audio/mpeg', 'png'=>'image/png'); // дописываем расширения mime type которых сервер определяет с ошибкой

$realmime = function_exists('mime_content_type') ? trim(mime_content_type($file)) : '';

$filemime = ($realmime!='' AND in_array($realmime, $goodmime)) ? $realmime : 'application/octet-stream';
if($filemime=='text/plain' AND $name!=''){
$ext = explode('.', trim($name));
$ext = strtolower($ext[count($ext)-1]);
$filemime = ($submime[$ext]!='') ? $submime[$ext] : $filemime;
}
return $filemime; 
}
.
для особо мерзких, мы особо дерзкие
ramzes, на твой пост (30.07.2011 / 14:05) отвечу, вот эта функция зачед)
.
Atmas, не успел дописать
# $file => путь к файлу
# $name => имя файла
на выходе дает mime type файла (не расширение)
Всего: 12