<?php
class File extends Object {
public static function extension($path) {
$file = basename($path);
if (strstr($file,".")!==false) {
return substr(strrchr($file,"."),1);
} else {
return "";
}
}
public static function mime($path) {
$ext = self::extension($path);
if (array_key_exists($ext,self::$mime)) {
return self::$mime[$ext];
} else {
return "application/octet-stream";
}
}
/**
* Find a file by recursively searching a folder
*
* @param string $fileName
* @param string $folder
* @return string The absolute path to the file or null if not found
*/
public static function find($fileName, $folder) {
$filePath = null;
foreach (glob($folder . "/*") as $path) {
if (is_file($path) && basename($path)===$fileName) {
$filePath = $path;
}
}
if (!isset($filePath)) {
foreach (glob($folder . "/*", GLOB_ONLYDIR) as $path) {
$filePath = File::find($fileName, $path);
}
}
return $filePath;
}
protected static $mime = array(
"323"=>"text/h323",
"acx"=>"application/internet-property-stream",
"ai"=>"application/postscript",
"aif"=>"audio/x-aiff",
"aifc"=>"audio/x-aiff",
"aiff"=>"audio/x-aiff",
"asf"=>"video/x-ms-asf",
"asr"=>"video/x-ms-asf",
"asx"=>"video/x-ms-asf",
"au"=>"audio/basic",
"avi"=>"video/x-msvideo",
"axs"=>"application/olescript",
"bas"=>"text/plain",
"bcpio"=>"application/x-bcpio",
"bin"=>"application/octet-stream",
"bmp"=>"image/bmp",
"c"=>"text/plain",
"cat"=>"application/vnd.ms-pkiseccat",
"cdf"=>"application/x-cdf",
"cer"=>"application/x-x509-ca-cert",
"class"=>"application/octet-stream",
"clp"=>"application/x-msclip",
"cmx"=>"image/x-cmx",
"cod"=>"image/cis-cod",
"cpio"=>"application/x-cpio",
"crd"=>"application/x-mscardfile",
"crl"=>"application/pkix-crl",
"crt"=>"application/x-x509-ca-cert",
"csh"=>"application/x-csh",
"css"=>"text/css",
"dcr"=>"application/x-director",
"der"=>"application/x-x509-ca-cert",
"dir"=>"application/x-director",
"dll"=>"application/x-msdownload",
"dms"=>"application/octet-stream",
"doc"=>"application/msword",
"dot"=>"application/msword",
"dvi"=>"application/x-dvi",
"dxr"=>"application/x-director",
"eps"=>"application/postscript",
"etx"=>"text/x-setext",
"evy"=>"application/envoy",
"exe"=>"application/octet-stream",
"fif"=>"application/fractals",
"flr"=>"x-world/x-vrml",
"flv"=>"video/x-flv",
"gif"=>"image/gif",
"gtar"=>"application/x-gtar",
"gz"=>"application/x-gzip",
"h"=>"text/plain",
"hdf"=>"application/x-hdf",
"hlp"=>"application/winhlp",
"hqx"=>"application/mac-binhex40",
"hta"=>"application/hta",
"htc"=>"text/x-component",
"htm"=>"text/html",
"html"=>"text/html",
"htt"=>"text/webviewhtml",
"ico"=>"image/x-icon",
"ief"=>"image/ief",
"iii"=>"application/x-iphone",
"ins"=>"application/x-internet-signup",
"isp"=>"application/x-internet-signup",
"jfif"=>"image/pipeg",
"jpe"=>"image/jpeg",
"jpeg"=>"image/jpeg",
"jpg"=>"image/jpeg",
"js"=>"application/x-javascript",
"latex"=>"application/x-latex",
"lha"=>"application/octet-stream",
"lsf"=>"video/x-la-asf",
"lsx"=>"video/x-la-asf",
"lzh"=>"application/octet-stream",
"m13"=>"application/x-msmediaview",
"m14"=>"application/x-msmediaview",
"m3u"=>"audio/x-mpegurl",
"man"=>"application/x-troff-man",
"mdb"=>"application/x-msaccess",
"me"=>"application/x-troff-me",
"mht"=>"message/rfc822",
"mhtml"=>"message/rfc822",
"mid"=>"audio/mid",
"mny"=>"application/x-msmoney",
"mov"=>"video/quicktime",
"movie"=>"video/x-sgi-movie",
"mp2"=>"video/mpeg",
"mp3"=>"audio/mpeg",
"mpa"=>"video/mpeg",
"mpe"=>"video/mpeg",
"mpeg"=>"video/mpeg",
"mpg"=>"video/mpeg",
"mpp"=>"application/vnd.ms-project",
"mpv2"=>"video/mpeg",
"ms"=>"application/x-troff-ms",
"mvb"=>"application/x-msmediaview",
"nws"=>"message/rfc822",
"oda"=>"application/oda",
"p10"=>"application/pkcs10",
"p12"=>"application/x-pkcs12",
"p7b"=>"application/x-pkcs7-certificates",
"p7c"=>"application/x-pkcs7-mime",
"p7m"=>"application/x-pkcs7-mime",
"p7r"=>"application/x-pkcs7-certreqresp",
"p7s"=>"application/x-pkcs7-signature",
"pbm"=>"image/x-portable-bitmap",
"pdf"=>"application/pdf",
"pfx"=>"application/x-pkcs12",
"pgm"=>"image/x-portable-graymap",
"pko"=>"application/ynd.ms-pkipko",
"pma"=>"application/x-perfmon",
"pmc"=>"application/x-perfmon",
"pml"=>"application/x-perfmon",
"pmr"=>"application/x-perfmon",
"pmw"=>"application/x-perfmon",
"png"=>"image/png",
"pnm"=>"image/x-portable-anymap",
"pot"=>"application/vnd.ms-powerpoint",
"ppm"=>"image/x-portable-pixmap",
"pps"=>"application/vnd.ms-powerpoint",
"ppt"=>"application/vnd.ms-powerpoint",
"prf"=>"application/pics-rules",
"ps"=>"application/postscript",
"pub"=>"application/x-mspublisher",
"qt"=>"video/quicktime",
"ra"=>"audio/x-pn-realaudio",
"ram"=>"audio/x-pn-realaudio",
"ras"=>"image/x-cmu-raster",
"rgb"=>"image/x-rgb",
"rmi"=>"audio/mid",
"roff"=>"application/x-troff",
"rtf"=>"application/rtf",
"rtx"=>"text/richtext",
"scd"=>"application/x-msschedule",
"sct"=>"text/scriptlet",
"setpay"=>"application/set-payment-initiation",
"setreg"=>"application/set-registration-initiation",
"sh"=>"application/x-sh",
"shar"=>"application/x-shar",
"sit"=>"application/x-stuffit",
"snd"=>"audio/basic",
"spc"=>"application/x-pkcs7-certificates",
"spl"=>"application/futuresplash",
"src"=>"application/x-wais-source",
"sst"=>"application/vnd.ms-pkicertstore",
"stl"=>"application/vnd.ms-pkistl",
"stm"=>"text/html",
"svg"=>"image/svg+xml",
"sv4cpio"=>"application/x-sv4cpio",
"sv4crc"=>"application/x-sv4crc",
"swf"=>"application/x-shockwave-flash",
"t"=>"application/x-troff",
"tar"=>"application/x-tar",
"tcl"=>"application/x-tcl",
"tex"=>"application/x-tex",
"texi"=>"application/x-texinfo",
"texinfo"=>"application/x-texinfo",
"tgz"=>"application/x-compressed",
"tif"=>"image/tiff",
"tiff"=>"image/tiff",
"tr"=>"application/x-troff",
"trm"=>"application/x-msterminal",
"tsv"=>"text/tab-separated-values",
"txt"=>"text/plain",
"uls"=>"text/iuls",
"ustar"=>"application/x-ustar",
"vcf"=>"text/x-vcard",
"vrml"=>"x-world/x-vrml",
"wav"=>"audio/x-wav",
"wcm"=>"application/vnd.ms-works",
"wdb"=>"application/vnd.ms-works",
"wks"=>"application/vnd.ms-works",
"wmf"=>"application/x-msmetafile",
"wps"=>"application/vnd.ms-works",
"wri"=>"application/x-mswrite",
"wrl"=>"x-world/x-vrml",
"wrz"=>"x-world/x-vrml",
"xaf"=>"x-world/x-vrml",
"xbm"=>"image/x-xbitmap",
"xla"=>"application/vnd.ms-excel",
"xlc"=>"application/vnd.ms-excel",
"xlm"=>"application/vnd.ms-excel",
"xls"=>"application/vnd.ms-excel",
"xlt"=>"application/vnd.ms-excel",
"xlw"=>"application/vnd.ms-excel",
"xof"=>"x-world/x-vrml",
"xpm"=>"image/x-xpixmap",
"xwd"=>"image/x-xwindowdump",
"z"=>"application/x-compress",
"zip"=>"application/zip"
);
}
?>