[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Получение информации о файле
Arni
Ну наверно не секрет что эта штука работает не на всех хостингах. Особо отлечился как всегда мастерхост, но тут упрекать их наверно не стоит поскольку тариф так и называется, Студент.

Но всетаки, я походу что-то пропустил. Я когда начал изучать пхп то вот такая конструкция упоминалась уже достаточно часто.


$finfo = finfo_open(FILEINFO_MIME_TYPE);
$finfo = finfo_file($finfo, $file);


Ну или более старый вариант

$filetype = mime_content_type('logo.png'); 

echo($filetype);


Мастерхост посчитал что студенткам и то и другое не нужно.

Я не думаю что есть сымсл говорить о том что считывать эту информацию с массива $_FILE не только не удобно, потому что разные браузеры могут прислать в четок в разном формате эту информацию, но и не безопастно ,поскольку прислать могут все что угодно.

Ну вот собственно и вопрос. Как быть то?



Спустя 2 часа, 56 минут, 13 секунд (10.06.2011 - 15:18) Arni написал(а):
Видать отвечать на мои темы не принято ...

Нашел решение, на время устроило. Может кому-то пригодится.


class mimetype {
function getType($filename) {
// get base name of the filename provided by user
$filename = basename($filename);

// break file into parts seperated by .
$filename = explode('.', $filename);

// take the last part of the file to get the file extension
$filename = $filename[count($filename)-1];

// find mime type
return $this->privFindType($filename);
}

function privFindType($ext) {
// create mimetypes array
$mimetypes = $this->privBuildMimeArray();

// return mime type for extension
if (isset($mimetypes[$ext])) {
return $mimetypes[$ext];
// if the extension wasn't found return octet-stream
} else {
return 'application/octet-stream';
}

}


function privBuildMimeArray() {
return array(
"ez" => "application/andrew-inset",
"hqx" => "application/mac-binhex40",
"cpt" => "application/mac-compactpro",
"doc" => "application/msword",
"bin" => "application/octet-stream",
"dms" => "application/octet-stream",
"lha" => "application/octet-stream",
"lzh" => "application/octet-stream",
"exe" => "application/octet-stream",
"class" => "application/octet-stream",
"so" => "application/octet-stream",
"dll" => "application/octet-stream",
"oda" => "application/oda",
"pdf" => "application/pdf",
"ai" => "application/postscript",
"eps" => "application/postscript",
"ps" => "application/postscript",
"smi" => "application/smil",
"smil" => "application/smil",
"wbxml" => "application/vnd.wap.wbxml",
"wmlc" => "application/vnd.wap.wmlc",
"wmlsc" => "application/vnd.wap.wmlscriptc",
"bcpio" => "application/x-bcpio",
"vcd" => "application/x-cdlink",
"pgn" => "application/x-chess-pgn",
"cpio" => "application/x-cpio",
"csh" => "application/x-csh",
"dcr" => "application/x-director",
"dir" => "application/x-director",
"dxr" => "application/x-director",
"dvi" => "application/x-dvi",
"spl" => "application/x-futuresplash",
"gtar" => "application/x-gtar",
"hdf" => "application/x-hdf",
"js" => "application/x-javascript",
"skp" => "application/x-koan",
"skd" => "application/x-koan",
"skt" => "application/x-koan",
"skm" => "application/x-koan",
"latex" => "application/x-latex",
"nc" => "application/x-netcdf",
"cdf" => "application/x-netcdf",
"sh" => "application/x-sh",
"shar" => "application/x-shar",
"swf" => "application/x-shockwave-flash",
"sit" => "application/x-stuffit",
"sv4cpio" => "application/x-sv4cpio",
"sv4crc" => "application/x-sv4crc",
"tar" => "application/x-tar",
"tcl" => "application/x-tcl",
"tex" => "application/x-tex",
"texinfo" => "application/x-texinfo",
"texi" => "application/x-texinfo",
"t" => "application/x-troff",
"tr" => "application/x-troff",
"roff" => "application/x-troff",
"man" => "application/x-troff-man",
"me" => "application/x-troff-me",
"ms" => "application/x-troff-ms",
"ustar" => "application/x-ustar",
"src" => "application/x-wais-source",
"xhtml" => "application/xhtml+xml",
"xht" => "application/xhtml+xml",
"zip" => "application/zip",
"au" => "audio/basic",
"snd" => "audio/basic",
"mid" => "audio/midi",
"midi" => "audio/midi",
"kar" => "audio/midi",
"mpga" => "audio/mpeg",
"mp2" => "audio/mpeg",
"mp3" => "audio/mpeg",
"aif" => "audio/x-aiff",
"aiff" => "audio/x-aiff",
"aifc" => "audio/x-aiff",
"m3u" => "audio/x-mpegurl",
"ram" => "audio/x-pn-realaudio",
"rm" => "audio/x-pn-realaudio",
"rpm" => "audio/x-pn-realaudio-plugin",
"ra" => "audio/x-realaudio",
"wav" => "audio/x-wav",
"pdb" => "chemical/x-pdb",
"xyz" => "chemical/x-xyz",
"bmp" => "image/bmp",
"gif" => "image/gif",
"ief" => "image/ief",
"jpeg" => "image/jpeg",
"jpg" => "image/jpeg",
"jpe" => "image/jpeg",
"png" => "image/png",
"tiff" => "image/tiff",
"tif" => "image/tif",
"djvu" => "image/vnd.djvu",
"djv" => "image/vnd.djvu",
"wbmp" => "image/vnd.wap.wbmp",
"ras" => "image/x-cmu-raster",
"pnm" => "image/x-portable-anymap",
"pbm" => "image/x-portable-bitmap",
"pgm" => "image/x-portable-graymap",
"ppm" => "image/x-portable-pixmap",
"rgb" => "image/x-rgb",
"xbm" => "image/x-xbitmap",
"xpm" => "image/x-xpixmap",
"xwd" => "image/x-windowdump",
"igs" => "model/iges",
"iges" => "model/iges",
"msh" => "model/mesh",
"mesh" => "model/mesh",
"silo" => "model/mesh",
"wrl" => "model/vrml",
"vrml" => "model/vrml",
"css" => "text/css",
"html" => "text/html",
"htm" => "text/html",
"asc" => "text/plain",
"txt" => "text/plain",
"rtx" => "text/richtext",
"rtf" => "text/rtf",
"sgml" => "text/sgml",
"sgm" => "text/sgml",
"tsv" => "text/tab-seperated-values",
"wml" => "text/vnd.wap.wml",
"wmls" => "text/vnd.wap.wmlscript",
"etx" => "text/x-setext",
"xml" => "text/xml",
"xsl" => "text/xml",
"mpeg" => "video/mpeg",
"mpg" => "video/mpeg",
"mpe" => "video/mpeg",
"qt" => "video/quicktime",
"mov" => "video/quicktime",
"mxu" => "video/vnd.mpegurl",
"avi" => "video/x-msvideo",
"movie" => "video/x-sgi-movie",
"ice" => "x-conference-xcooltalk"
);
}
}


Спустя 54 минуты, 2 секунды (10.06.2011 - 16:12) waldicom написал(а):
Это он чтоли по расширению определяет, что за файл?
Если да (а оно так и есть), то в чем смысл тогда?

Спустя 4 часа, 44 минуты, 17 секунд (10.06.2011 - 20:57) kirik написал(а):
Arni
Есть ещё функция mime_content_type(), но она может быть мертва.
Если нужна универсальное решение (не только сабжевое), то не используй то что не идёт в php по дефолту (PEAR, PECL)

Спустя 52 минуты, 59 секунд (10.06.2011 - 21:50) Arni написал(а):
Цитата (waldicom @ 10.06.2011 - 13:12)
Это он чтоли по расширению определяет, что за файл?
Если да (а оно так и есть), то в чем смысл тогда?

Ну да по расширению. Криво но что поделать. Мне нужно скрипт по быстрому запустить вот и все. У вас есть более хорошие решения?

to kirik

Я в курсе, это тоже отключили на мастерхост ... Мне вобще кажется что услуги мастерхоста покупают только не понимающие люди. Да и не так дешево цену правят. Долбаный тариф Студент почти 3000 в год получается.

Спустя 7 минут, 41 секунда (10.06.2011 - 21:57) kirik написал(а):
Цитата (Arni @ 10.06.2011 - 14:50)
Криво но что поделать.

Просто вариант что ты нашёл мало чем отличается от того что есть в _FILES..

Спустя 6 минут, 8 секунд (10.06.2011 - 22:04) Arni написал(а):
Цитата (kirik @ 10.06.2011 - 18:57)
Цитата (Arni @ 10.06.2011 - 14:50)
Криво но что поделать.

Просто вариант что ты нашёл мало чем отличается от того что есть в _FILES..

Мало согласен, но есть.

1. Если ворд не установлен то браузер не определит миме. Пример ворда чисто условный. Ситуация может повториться и в другом подобном проявлении.
2. К примеру опера и фф присылают разные миме для картинки. И нужно делать проверку мол вот и то и другое это картинка. Но это походу опара шалит а это фф или ИЕ.

Ну короче как-то так. blink.gif


_____________
Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены. (Edward V Berard).
________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.