Писал функцию для своей 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 (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
Я плохо знаком с функциями для работы с файловой системой в РНР.
//------------- Функция определения типа файла -----------------//
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 файла (не расширение)