Add File Types for Mediathek

In WordPress 2.8.5 the whitelist of allowed MIME types for downloads will be valid for administrators the first time. This is a step towards security and you can, with the help of a constant, upload all data types.
define ( 'ALLOW_UNFILTERED_UPLOADS', true);

Who has implemented several projects already with WordPress probably had experienced that a user doesn't have the rights to upload a specific format.

The Plugin Role Manager allows the uploading of all MIME types. But in my opinion this is not the perfect way, and therefore here is a small code snippet that takes adjusting according to the particular requirement.

upload-filter

All allowed types are found in the whitelist-function wp_check_filetype(), in wp-includes/functions.php.
This function has a filter upload_mimes that can be extended. And there we come in and call the MIME types that we need. In the following example, I allow PHP-, XHTML- and htaccess-files. The options are passed in an array and the assignment is important so that WordPress can also assign an icon, like you see on the screenshot.

function my_upload_mimes() {
	$mime_types = array( 
		'php|phps'   => 'text/php',
		'xhtm|xhtml' => 'text/html',
		'htaccess'    => 'text/plain'
	);
	
	return $mime_types;
}

add_filter( 'upload_mimes', 'my_upload_mimes' );

Mime Types

To obtain a list of all MIME types that can be used, you can check out the following list. The list should only contain type files, which are explicitly required, otherwise the above constants can be used.

$mime_types = 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',
'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',
'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',
'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'
);

Comments are closed.

One comment

  1. ovidiu

    there has been a plugin for this since 2006 🙂 I have been happily using it for a couple of years: http://blog.ftwr.co.uk/wordpress/mime-config/