/wp-content/plugins/wp-e-commerce/wpsc-includes/mimetype.php
PHP | 241 lines | 159 code | 9 blank | 73 comment | 2 complexity | 64df4c1c13525a2b2fc2f5c5c9d5bb57 MD5 | raw file
- <?php
- /**
- Copyright (C) 2002 Jason Sheets <jsheets@shadonet.com>.
- All rights reserved.
- THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- 3. Neither the name of the project nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
- **/
- /**
- Name: PHP MimeType Class
- Version: 1.0
- Date Released: 10/20/02
- Description: This class allows a PHP script to determine the mime type
- a file based on the file extension. This class is handy for PHP versions
- without the benefit of other tools to determine the mime type. The class
- defaults to octet-stream so if the file type is not recognized the user
- is presented with a file download prompt.
- NOTES: The mime types for this version are based on Apache 1.3.27
- mime types may change or need to be added in the future, the mime types
- are stored in an array so that an awk or other script can automatically
- generate the code to make the array.
- Usage:
- First an instance of the mimetype class must be created, then the
- getType method should be called with the filename. It will return
- the mime type, an example follows.
-
- Example:
- $mimetype = new mimetype();
- print $mimetype->getType('acrobat.pdf');
- Author: Jason Sheets <jsheets@shadonet.com>
- License: This script is distributed under the BSD License, you are free
- to use, or modify it however you like. If you find this script useful please
- e-mail me.
- **/
- 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",
- "m4a" => "audio/mp4",
- "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",
- "mp4" => "video/mp4",
- "qt" => "video/quicktime",
- "mov" => "video/quicktime",
- "mxu" => "video/vnd.mpegurl",
- "avi" => "video/x-msvideo",
- "movie" => "video/x-sgi-movie",
- "ice" => "x-conference-xcooltalk"
- );
- }
- }
- ?>