Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hargon

[Resolvido] ContentType de arquivo

Recommended Posts

Dois meses de pesquisa e até hoje não encontrei uma solução.

 

Como consigo recuperar o ContentType de um arquivo que já está no servidor?

 

Obs. não é no momento do upload e estou utilizando PHP 5.2.13, servidor Apache, no Windows.

 

Desde já agradeço pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hargon,

 

Você pode utilizar finfo:

 

<?php
/**
* Recupera o Mime-Type de um arquivo
* @param string $file Caminho para o arquivo
* @param boolean $encoding Define se também será retornado a codificação do arquivo
* @return string
*/
function getMimeType( $file , $encoding = true ){
if ( function_exists( 'finfo_open' ) ){
	if ( is_file( $file ) && is_readable( $file ) ){
		$finfo = new finfo( $encoding ? FILEINFO_MIME : FILEINFO_MIME_TYPE );

		return $finfo->file( $file );
	} else {
		trigger_error( 'O arquivo não existe ou não temos permissões de leitura.' , E_USER_ERROR );
	}
} else {
	trigger_error( 'Você não tem finfo.' , E_USER_ERROR );
}
}

 

Usando isso ai; Imagine que você tenha os seguintes arquivos no seu servidor:

 

arquivo.html

arquivo.png

 

<?php
var_dump( getMimeType( 'arquivo.html' ) );
var_dump( getMimeType( 'arquivo.png' , false ) );

 

A saída:

 

string(24) "text/html; charset=UTF-8"

string(9) "image/png"

 

Perceba que, no PNG o parâmetro $encoding foi definido como false já que se trata de uma imagem, caso contrário, a saída seria:

 

string(24) "text/html; charset=UTF-8"

string(25) "image/png; charset=binary"

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Fileinfo

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda João. Só hoje pude testar.

 

O servidor retornou o seguinte erro:

Fatal error: Você não tem finfo. in E:\vhosts\dominio.com\httpdocs\teste49.php on line 18

 

Já havia testado com finfo e deu o mesmo erro.

 

Pelo info.php, vi que não tenho o finfo instalado. Não seria pela versão do PHP que utilizo? Na infor da biblioteca diz PHP >= 5.3.0 .

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
/**
* Recupera o Mime-Type de um arquivo
*
* @param string $file Caminho para o arquivo
*
* @param boolean $encoding Define se também será retornado a codificação do arquivo
*     Indisponível caso a biblioteca FileInfo esteja indisponível.
*
* @return string
*/
function getMimeType( $file , $encoding = true ){
   if ( function_exists( 'finfo_open' ) ){
       if ( is_file( $file ) && is_readable( $file ) ){
           $finfo = new finfo( $encoding ? FILEINFO_MIME : FILEINFO_MIME_TYPE );
           return $finfo->file( $file );
       }
       else trigger_error( 'O arquivo não existe ou não temos permissões de leitura.' , E_USER_ERROR );
   }
   elseif( function_exists( 'mime_content_type' ) ) return mime_content_type( $file );
   else trigger_error( 'Impossível retornar o mime-type. As bibliotecas necessárias não estão disponíveis.' , E_USER_ERROR );
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Evandro. A mensagem retornada foi:

Fatal error: Impossível retornar o mime-type. As bibliotecas necessárias não estão disponíveis. in E:\vhosts\dominio\httpdocs\teste49.php on line 21

Compartilhar este post


Link para o post
Compartilhar em outros sites

Última tentativa antes de entrar em contato com seu servidor.

 

<?php
function getMimeType($file){
   if(!is_file($file)) trigger_error("Arquivo <b>{$file}</b> não encontrado.");
   $ver = explode('.', phpversion());
   if(($ver[0] . $ver[1]) === '53') {
       $handler = new finfo(FILEINFO_MIME);
       return $handler->file($file);
   }
   if(!function_exists('mime_content_type')) {
       $ext = PHP_SHLIB_SUFFIX === 'dll' ? 'php_' : '';
       $ext .= 'finfo' . empty($ext) ? '.so' : '.dll';
       if(!dl($ext)) die('Impossível carregar a biblioteca.');
       return mime_content_type($file);
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: dl() [function.dl]: Unable to load dynamic library 'C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\ext\php_.so' - The specified module could not be found. in E:\vhosts\dominio\httpdocs\teste49.php on line 22

Impossível carregar a biblioteca.

Pelo visto só quando tiver PHP 5.3 instalado né? Em outras versões não tem como recuperar essa informação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peraí que a falha foi minha :x

 

$ext = PHP_SHLIB_SUFFIX === 'dll' ? 'php_' : '';
       $ext .= 'finfo' . empty($ext) ? '.so' : '.dll';

 

troca por isso

 

$ext = (PATH_SEPARATOR === ';')? 'php_finfo.dll' : 'finfo.so';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: dl() [function.dl]: Unable to load dynamic library 'C:\Program Files\Parallels\Plesk\Additional\PleskPHP5\ext\php_finfo.dll' - The specified module could not be found. in E:\vhosts\dominio\httpdocs\teste49.php on line 21

Impossível carregar a biblioteca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://www.php.net/manual/en/function.mime-content-type.php

 

retirado do manual:

<?phpfunction get_mime_type($filename, $mimePath = '../etc') { 	$fileext = substr(strrchr($filename, '.'), 1); 	if (empty($fileext)) return (false); 	$regex = "/^([w+-./]+)s+(w+s)*($fileexts)/i"; 	$lines = file('mime.types'); 	foreach($lines as $line) {		if (substr($line, 0, 1) == '#') continue; // skip comments 		$line = rtrim($line) . " "; 		if (!preg_match($regex, $line, $matches)) continue; // no match to the extension 		return ($matches[1]); 	} 	return (false); // no match at all } 	echo get_mime_type('seta.jpg', ''), "<br />n";	echo get_mime_type('estilo.css', ''), "<br />n";	echo get_mime_type('jquery-1.4.2.min.js', ''), "<br />n";
saída:

 

image/jpeg

text/css

application/javascript

arquivo mime.types

 

[1] Requires mime.types file distributed with Apache (normally found at ServerRoot/conf/mime.types).

você tem ele ai também Imagem Postada

 

 

# This is a comment. I love comments.

 

# This file controls what Internet media types are sent to the client for

# given file extension(s). Sending the correct media type to the client

# is important so they know how to handle the content of the file.

# Extra types can either be added here or by using an AddType directive

# in your config files. For more information about Internet media types,

# please read RFC 2045, 2046, 2047, 2048, and 2077. The Internet media type

# registry is at <http://www.iana.org/assignments/media-types/>.

 

# MIME type Extensions

application/activemessage

application/andrew-inset ez

application/applefile

application/atom+xml atom

application/atomcat+xml atomcat

application/atomicmail

application/atomsvc+xml atomsvc

application/auth-policy+xml

application/batch-smtp

application/beep+xml

application/cals-1840

application/ccxml+xml ccxml

application/cellml+xml

application/cnrp+xml

application/commonground

application/conference-info+xml

application/cpl+xml

application/csta+xml

application/cstadata+xml

application/cybercash

application/davmount+xml davmount

application/dca-rft

application/dec-dx

application/dialog-info+xml

application/dicom

application/dns

application/dvcs

application/ecmascript ecma

application/edi-consent

application/edi-x12

application/edifact

application/epp+xml

application/eshop

application/fastinfoset

application/fastsoap

application/fits

application/font-tdpfr pfr

application/h224

application/http

application/hyperstudio stk

application/iges

application/im-iscomposing+xml

application/index

application/index.cmd

application/index.obj

application/index.response

application/index.vnd

application/iotp

application/ipp

application/isup

application/javascript js

application/json json

application/kpml-request+xml

application/kpml-response+xml

application/lost+xml lostxml

application/mac-binhex40 hqx

application/mac-compactpro cpt

application/macwriteii

application/marc mrc

application/mathematica ma nb mb

application/mathml+xml mathml

application/mbms-associated-procedure-description+xml

application/mbms-deregister+xml

application/mbms-envelope+xml

application/mbms-msk+xml

application/mbms-msk-response+xml

application/mbms-protection-description+xml

application/mbms-reception-report+xml

application/mbms-register+xml

application/mbms-register-response+xml

application/mbms-user-service-description+xml

application/mbox mbox

application/media_control+xml

application/mediaservercontrol+xml mscml

application/mikey

application/moss-keys

application/moss-signature

application/mosskey-data

application/mosskey-request

application/mp4 mp4s

application/mpeg4-generic

application/mpeg4-iod

application/mpeg4-iod-xmt

application/msword doc dot

application/mxf mxf

application/nasdata

application/news-transmission

application/nss

application/ocsp-request

application/ocsp-response

application/octet-stream bin dms lha lzh class so iso dmg dist distz pkg bpk dump elc

application/oda oda

application/oebps-package+xml

application/ogg ogx

application/parityfec

application/patch-ops-error+xml xer

application/pdf pdf

application/pgp-encrypted pgp

application/pgp-keys

application/pgp-signature asc sig

application/pics-rules prf

application/pidf+xml

application/pidf-diff+xml

application/pkcs10 p10

application/pkcs7-mime p7m p7c

application/pkcs7-signature p7s

application/pkix-cert cer

application/pkix-crl crl

application/pkix-pkipath pkipath

application/pkixcmp pki

application/pls+xml pls

application/poc-settings+xml

application/postscript ai eps ps

application/prs.alvestrand.titrax-sheet

application/prs.cww cww

application/prs.nprend

application/prs.plucker

application/qsig

application/rdf+xml rdf

application/reginfo+xml rif

application/relax-ng-compact-syntax rnc

application/remote-printing

application/resource-lists+xml rl

application/resource-lists-diff+xml rld

application/riscos

application/rlmi+xml

application/rls-services+xml rs

application/rsd+xml rsd

application/rss+xml rss

application/rtf rtf

application/rtx

application/samlassertion+xml

application/samlmetadata+xml

application/sbml+xml sbml

application/scvp-cv-request scq

application/scvp-cv-response scs

application/scvp-vp-request spq

application/scvp-vp-response spp

application/sdp sdp

application/set-payment

application/set-payment-initiation setpay

application/set-registration

application/set-registration-initiation setreg

application/sgml

application/sgml-open-catalog

application/shf+xml shf

application/sieve

application/simple-filter+xml

application/simple-message-summary

application/simplesymbolcontainer

application/slate

application/smil

application/smil+xml smi smil

application/soap+fastinfoset

application/soap+xml

application/sparql-query rq

application/sparql-results+xml srx

application/spirits-event+xml

application/srgs gram

application/srgs+xml grxml

application/ssml+xml ssml

application/timestamp-query

application/timestamp-reply

application/tve-trigger

application/ulpfec

application/vemmi

application/vividence.scriptfile

application/vnd.3gpp.bsf+xml

application/vnd.3gpp.pic-bw-large plb

application/vnd.3gpp.pic-bw-small psb

application/vnd.3gpp.pic-bw-var pvb

application/vnd.3gpp.sms

application/vnd.3gpp2.bcmcsinfo+xml

application/vnd.3gpp2.sms

application/vnd.3gpp2.tcap tcap

application/vnd.3m.post-it-notes pwn

application/vnd.accpac.simply.aso aso

application/vnd.accpac.simply.imp imp

application/vnd.acucobol acu

application/vnd.acucorp atc acutc

application/vnd.adobe.xdp+xml xdp

application/vnd.adobe.xfdf xfdf

application/vnd.aether.imp

application/vnd.americandynamics.acc acc

application/vnd.amiga.ami ami

application/vnd.anser-web-certificate-issue-initiation cii

application/vnd.anser-web-funds-transfer-initiation fti

application/vnd.antix.game-component atx

application/vnd.apple.installer+xml mpkg

application/vnd.arastra.swi swi

application/vnd.audiograph aep

application/vnd.autopackage

application/vnd.avistar+xml

application/vnd.blueice.multipass mpm

application/vnd.bmi bmi

application/vnd.businessobjects rep

application/vnd.cab-jscript

application/vnd.canon-cpdl

application/vnd.canon-lips

application/vnd.cendio.thinlinc.clientconf

application/vnd.chemdraw+xml cdxml

application/vnd.chipnuts.karaoke-mmd mmd

application/vnd.cinderella cdy

application/vnd.cirpack.isdn-ext

application/vnd.claymore cla

application/vnd.clonk.c4group c4g c4d c4f c4p c4u

application/vnd.commerce-battelle

application/vnd.commonspace csp cst

application/vnd.contact.cmsg cdbcmsg

application/vnd.cosmocaller cmc

application/vnd.crick.clicker clkx

application/vnd.crick.clicker.keyboard clkk

application/vnd.crick.clicker.palette clkp

application/vnd.crick.clicker.template clkt

application/vnd.crick.clicker.wordbank clkw

application/vnd.criticaltools.wbs+xml wbs

application/vnd.ctc-posml pml

application/vnd.ctct.ws+xml

application/vnd.cups-pdf

application/vnd.cups-postscript

application/vnd.cups-ppd ppd

application/vnd.cups-raster

application/vnd.cups-raw

application/vnd.curl curl

application/vnd.cybank

application/vnd.data-vision.rdz rdz

application/vnd.denovo.fcselayout-link fe_launch

application/vnd.dna dna

application/vnd.dolby.mlp mlp

application/vnd.dpgraph dpg

application/vnd.dreamfactory dfac

application/vnd.dvb.esgcontainer

application/vnd.dvb.ipdcesgaccess

application/vnd.dvb.iptv.alfec-base

application/vnd.dvb.iptv.alfec-enhancement

application/vnd.dxr

application/vnd.ecdis-update

application/vnd.ecowin.chart mag

application/vnd.ecowin.filerequest

application/vnd.ecowin.fileupdate

application/vnd.ecowin.series

application/vnd.ecowin.seriesrequest

application/vnd.ecowin.seriesupdate

application/vnd.enliven nml

application/vnd.epson.esf esf

application/vnd.epson.msf msf

application/vnd.epson.quickanime qam

application/vnd.epson.salt slt

application/vnd.epson.ssf ssf

application/vnd.ericsson.quickcall

application/vnd.eszigno3+xml es3 et3

application/vnd.eudora.data

application/vnd.ezpix-album ez2

application/vnd.ezpix-package ez3

application/vnd.fdf fdf

application/vnd.ffsns

application/vnd.fints

application/vnd.flographit gph

application/vnd.fluxtime.clip ftc

application/vnd.font-fontforge-sfd

application/vnd.framemaker fm frame maker

application/vnd.frogans.fnc fnc

application/vnd.frogans.ltf ltf

application/vnd.fsc.weblaunch fsc

application/vnd.fujitsu.oasys oas

application/vnd.fujitsu.oasys2 oa2

application/vnd.fujitsu.oasys3 oa3

application/vnd.fujitsu.oasysgp fg5

application/vnd.fujitsu.oasysprs bh2

application/vnd.fujixerox.art-ex

application/vnd.fujixerox.art4

application/vnd.fujixerox.hbpl

application/vnd.fujixerox.ddd ddd

application/vnd.fujixerox.docuworks xdw

application/vnd.fujixerox.docuworks.binder xbd

application/vnd.fut-misnet

application/vnd.fuzzysheet fzs

application/vnd.genomatix.tuxedo txd

application/vnd.gmx gmx

application/vnd.google-earth.kml+xml kml

application/vnd.google-earth.kmz kmz

application/vnd.grafeq gqf gqs

application/vnd.gridmp

application/vnd.groove-account gac

application/vnd.groove-help ghf

application/vnd.groove-identity-message gim

application/vnd.groove-injector grv

application/vnd.groove-tool-message gtm

application/vnd.groove-tool-template tpl

application/vnd.groove-vcard vcg

application/vnd.handheld-entertainment+xml zmm

application/vnd.hbci hbci

application/vnd.hcl-bireports

application/vnd.hhe.lesson-player les

application/vnd.hp-hpgl hpgl

application/vnd.hp-hpid hpid

application/vnd.hp-hps hps

application/vnd.hp-jlyt jlt

application/vnd.hp-pcl pcl

application/vnd.hp-pclxl pclxl

application/vnd.httphone

application/vnd.hydrostatix.sof-data sfd-hdstx

application/vnd.hzn-3d-crossword x3d

application/vnd.ibm.afplinedata

application/vnd.ibm.electronic-media

application/vnd.ibm.minipay mpy

application/vnd.ibm.modcap afp listafp list3820

application/vnd.ibm.rights-management irm

application/vnd.ibm.secure-container sc

application/vnd.iccprofile icc icm

application/vnd.igloader igl

application/vnd.immervision-ivp ivp

application/vnd.immervision-ivu ivu

application/vnd.informedcontrol.rms+xml

application/vnd.intercon.formnet xpw xpx

application/vnd.intertrust.digibox

application/vnd.intertrust.nncp

application/vnd.intu.qbo qbo

application/vnd.intu.qfx qfx

application/vnd.iptc.g2.conceptitem+xml

application/vnd.iptc.g2.knowledgeitem+xml

application/vnd.iptc.g2.newsitem+xml

application/vnd.iptc.g2.packageitem+xml

application/vnd.ipunplugged.rcprofile rcprofile

application/vnd.irepository.package+xml irp

application/vnd.is-xpr xpr

application/vnd.jam jam

application/vnd.japannet-directory-service

application/vnd.japannet-jpnstore-wakeup

application/vnd.japannet-payment-wakeup

application/vnd.japannet-registration

application/vnd.japannet-registration-wakeup

application/vnd.japannet-setstore-wakeup

application/vnd.japannet-verification

application/vnd.japannet-verification-wakeup

application/vnd.jcp.javame.midlet-rms rms

application/vnd.jisp jisp

application/vnd.joost.joda-archive joda

application/vnd.kahootz ktz ktr

application/vnd.kde.karbon karbon

application/vnd.kde.kchart chrt

application/vnd.kde.kformula kfo

application/vnd.kde.kivio flw

application/vnd.kde.kontour kon

application/vnd.kde.kpresenter kpr kpt

application/vnd.kde.kspread ksp

application/vnd.kde.kword kwd kwt

application/vnd.kenameaapp htke

application/vnd.kidspiration kia

application/vnd.kinar kne knp

application/vnd.koan skp skd skt skm

application/vnd.kodak-descriptor sse

application/vnd.liberty-request+xml

application/vnd.llamagraphics.life-balance.desktop lbd

application/vnd.llamagraphics.life-balance.exchange+xml lbe

application/vnd.lotus-1-2-3 123

application/vnd.lotus-approach apr

application/vnd.lotus-freelance pre

application/vnd.lotus-notes nsf

application/vnd.lotus-organizer org

application/vnd.lotus-screencam scm

application/vnd.lotus-wordpro lwp

application/vnd.macports.portpkg portpkg

application/vnd.marlin.drm.actiontoken+xml

application/vnd.marlin.drm.conftoken+xml

application/vnd.marlin.drm.license+xml

application/vnd.marlin.drm.mdcf

application/vnd.mcd mcd

application/vnd.medcalcdata mc1

application/vnd.mediastation.cdkey cdkey

application/vnd.meridian-slingshot

application/vnd.mfer mwf

application/vnd.mfmp mfm

application/vnd.micrografx.flo flo

application/vnd.micrografx.igx igx

application/vnd.mif mif

application/vnd.minisoft-hp3000-save

application/vnd.mitsubishi.misty-guard.trustweb

application/vnd.mobius.daf daf

application/vnd.mobius.dis dis

application/vnd.mobius.mbk mbk

application/vnd.mobius.mqy mqy

application/vnd.mobius.msl msl

application/vnd.mobius.plc plc

application/vnd.mobius.txf txf

application/vnd.mophun.application mpn

application/vnd.mophun.certificate mpc

application/vnd.motorola.flexsuite

application/vnd.motorola.flexsuite.adsi

application/vnd.motorola.flexsuite.fis

application/vnd.motorola.flexsuite.gotap

application/vnd.motorola.flexsuite.kmr

application/vnd.motorola.flexsuite.ttc

application/vnd.motorola.flexsuite.wem

application/vnd.motorola.iprm

application/vnd.mozilla.xul+xml xul

application/vnd.ms-artgalry cil

application/vnd.ms-asf asf

application/vnd.ms-cab-compressed cab

application/vnd.ms-excel xls xlm xla xlc xlt xlw

application/vnd.ms-fontobject eot

application/vnd.ms-htmlhelp chm

application/vnd.ms-ims ims

application/vnd.ms-lrm lrm

application/vnd.ms-playready.initiator+xml

application/vnd.ms-powerpoint ppt pps pot

application/vnd.ms-project mpp mpt

application/vnd.ms-tnef

application/vnd.ms-wmdrm.lic-chlg-req

application/vnd.ms-wmdrm.lic-resp

application/vnd.ms-wmdrm.meter-chlg-req

application/vnd.ms-wmdrm.meter-resp

application/vnd.ms-works wps wks wcm wdb

application/vnd.ms-wpl wpl

application/vnd.ms-xpsdocument xps

application/vnd.mseq mseq

application/vnd.msign

application/vnd.multiad.creator

application/vnd.multiad.creator.cif

application/vnd.music-niff

application/vnd.musician mus

application/vnd.muvee.style msty

application/vnd.ncd.control

application/vnd.ncd.reference

application/vnd.nervana

application/vnd.netfpx

application/vnd.neurolanguage.nlu nlu

application/vnd.noblenet-directory nnd

application/vnd.noblenet-sealer nns

application/vnd.noblenet-web nnw

application/vnd.nokia.catalogs

application/vnd.nokia.conml+wbxml

application/vnd.nokia.conml+xml

application/vnd.nokia.isds-radio-presets

application/vnd.nokia.iptv.config+xml

application/vnd.nokia.landmark+wbxml

application/vnd.nokia.landmark+xml

application/vnd.nokia.landmarkcollection+xml

application/vnd.nokia.n-gage.ac+xml

application/vnd.nokia.n-gage.data ngdat

application/vnd.nokia.n-gage.symbian.install n-gage

application/vnd.nokia.ncd

application/vnd.nokia.pcd+wbxml

application/vnd.nokia.pcd+xml

application/vnd.nokia.radio-preset rpst

application/vnd.nokia.radio-presets rpss

application/vnd.novadigm.edm edm

application/vnd.novadigm.edx edx

application/vnd.novadigm.ext ext

application/vnd.oasis.opendocument.chart odc

application/vnd.oasis.opendocument.chart-template otc

application/vnd.oasis.opendocument.formula odf

application/vnd.oasis.opendocument.formula-template otf

application/vnd.oasis.opendocument.graphics odg

application/vnd.oasis.opendocument.graphics-template otg

application/vnd.oasis.opendocument.image odi

application/vnd.oasis.opendocument.image-template oti

application/vnd.oasis.opendocument.presentation odp

application/vnd.oasis.opendocument.presentation-template otp

application/vnd.oasis.opendocument.spreadsheet ods

application/vnd.oasis.opendocument.spreadsheet-template ots

application/vnd.oasis.opendocument.text odt

application/vnd.oasis.opendocument.text-master otm

application/vnd.oasis.opendocument.text-template ott

application/vnd.oasis.opendocument.text-web oth

application/vnd.obn

application/vnd.olpc-sugar xo

application/vnd.oma-scws-config

application/vnd.oma-scws-http-request

application/vnd.oma-scws-http-response

application/vnd.oma.bcast.associated-procedure-parameter+xml

application/vnd.oma.bcast.drm-trigger+xml

application/vnd.oma.bcast.imd+xml

application/vnd.oma.bcast.ltkm

application/vnd.oma.bcast.notification+xml

application/vnd.oma.bcast.provisioningtrigger

application/vnd.oma.bcast.sgboot

application/vnd.oma.bcast.sgdd+xml

application/vnd.oma.bcast.sgdu

application/vnd.oma.bcast.simple-symbol-container

application/vnd.oma.bcast.smartcard-trigger+xml

application/vnd.oma.bcast.sprov+xml

application/vnd.oma.bcast.stkm

application/vnd.oma.dcd

application/vnd.oma.dcdc

application/vnd.oma.dd2+xml dd2

application/vnd.oma.drm.risd+xml

application/vnd.oma.group-usage-list+xml

application/vnd.oma.poc.detailed-progress-report+xml

application/vnd.oma.poc.final-report+xml

application/vnd.oma.poc.groups+xml

application/vnd.oma.poc.invocation-descriptor+xml

application/vnd.oma.poc.optimized-progress-report+xml

application/vnd.oma.xcap-directory+xml

application/vnd.omads-email+xml

application/vnd.omads-file+xml

application/vnd.omads-folder+xml

application/vnd.omaloc-supl-init

application/vnd.openofficeorg.extension oxt

application/vnd.osa.netdeploy

application/vnd.osgi.dp dp

application/vnd.otps.ct-kip+xml

application/vnd.palm prc pdb pqa oprc

application/vnd.paos.xml

application/vnd.pg.format str

application/vnd.pg.osasli ei6

application/vnd.piaccess.application-licence

application/vnd.picsel efif

application/vnd.poc.group-advertisement+xml

application/vnd.pocketlearn plf

application/vnd.powerbuilder6 pbd

application/vnd.powerbuilder6-s

application/vnd.powerbuilder7

application/vnd.powerbuilder7-s

application/vnd.powerbuilder75

application/vnd.powerbuilder75-s

application/vnd.preminet

application/vnd.previewsystems.box box

application/vnd.proteus.magazine mgz

application/vnd.publishare-delta-tree qps

application/vnd.pvi.ptid1 ptid

application/vnd.pwg-multiplexed

application/vnd.pwg-xhtml-print+xml

application/vnd.qualcomm.brew-app-res

application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb

application/vnd.rapid

application/vnd.recordare.musicxml mxl

application/vnd.recordare.musicxml+xml

application/vnd.renlearn.rlprint

application/vnd.rn-realmedia rm

application/vnd.route66.link66+xml link66

application/vnd.ruckus.download

application/vnd.s3sms

application/vnd.sbm.mid2

application/vnd.scribus

application/vnd.sealed.3df

application/vnd.sealed.csf

application/vnd.sealed.doc

application/vnd.sealed.eml

application/vnd.sealed.mht

application/vnd.sealed.net

application/vnd.sealed.ppt

application/vnd.sealed.tiff

application/vnd.sealed.xls

application/vnd.sealedmedia.softseal.html

application/vnd.sealedmedia.softseal.pdf

application/vnd.seemail see

application/vnd.sema sema

application/vnd.semd semd

application/vnd.semf semf

application/vnd.shana.informed.formdata ifm

application/vnd.shana.informed.formtemplate itp

application/vnd.shana.informed.interchange iif

application/vnd.shana.informed.package ipk

application/vnd.simtech-mindmapper twd twds

application/vnd.smaf mmf

application/vnd.software602.filler.form+xml

application/vnd.software602.filler.form-xml-zip

application/vnd.solent.sdkm+xml sdkm sdkd

application/vnd.spotfire.dxp dxp

application/vnd.spotfire.sfs sfs

application/vnd.sss-cod

application/vnd.sss-dtf

application/vnd.sss-ntf

application/vnd.street-stream

application/vnd.sun.wadl+xml

application/vnd.sus-calendar sus susp

application/vnd.svd svd

application/vnd.swiftview-ics

application/vnd.syncml+xml xsm

application/vnd.syncml.dm+wbxml bdm

application/vnd.syncml.dm+xml xdm

application/vnd.syncml.ds.notification

application/vnd.tao.intent-module-archive tao

application/vnd.tmobile-livetv tmo

application/vnd.trid.tpt tpt

application/vnd.triscape.mxs mxs

application/vnd.trueapp tra

application/vnd.truedoc

application/vnd.ufdl ufd ufdl

application/vnd.uiq.theme utz

application/vnd.umajin umj

application/vnd.unity unityweb

application/vnd.uoml+xml uoml

application/vnd.uplanet.alert

application/vnd.uplanet.alert-wbxml

application/vnd.uplanet.bearer-choice

application/vnd.uplanet.bearer-choice-wbxml

application/vnd.uplanet.cacheop

application/vnd.uplanet.cacheop-wbxml

application/vnd.uplanet.channel

application/vnd.uplanet.channel-wbxml

application/vnd.uplanet.list

application/vnd.uplanet.list-wbxml

application/vnd.uplanet.listcmd

application/vnd.uplanet.listcmd-wbxml

application/vnd.uplanet.signal

application/vnd.vcx vcx

application/vnd.vd-study

application/vnd.vectorworks

application/vnd.vidsoft.vidconference

application/vnd.visio vsd vst vss vsw

application/vnd.visionary vis

application/vnd.vividence.scriptfile

application/vnd.vsf vsf

application/vnd.wap.sic

application/vnd.wap.slc

application/vnd.wap.wbxml wbxml

application/vnd.wap.wmlc wmlc

application/vnd.wap.wmlscriptc wmlsc

application/vnd.webturbo wtb

application/vnd.wfa.wsc

application/vnd.wmc

application/vnd.wmf.bootstrap

application/vnd.wordperfect wpd

application/vnd.wqd wqd

application/vnd.wrq-hp3000-labelled

application/vnd.wt.stf stf

application/vnd.wv.csp+wbxml

application/vnd.wv.csp+xml

application/vnd.wv.ssp+xml

application/vnd.xara xar

application/vnd.xfdl xfdl

application/vnd.xmi+xml

application/vnd.xmpie.cpkg

application/vnd.xmpie.dpkg

application/vnd.xmpie.plan

application/vnd.xmpie.ppkg

application/vnd.xmpie.xlim

application/vnd.yamaha.hv-dic hvd

application/vnd.yamaha.hv-script hvs

application/vnd.yamaha.hv-voice hvp

application/vnd.yamaha.smaf-audio saf

application/vnd.yamaha.smaf-phrase spf

application/vnd.yellowriver-custom-menu cmp

application/vnd.zzazz.deck+xml zaz

application/voicexml+xml vxml

application/watcherinfo+xml

application/whoispp-query

application/whoispp-response

application/winhlp hlp

application/wita

application/wordperfect5.1

application/wsdl+xml wsdl

application/wspolicy+xml wspolicy

application/x-ace-compressed ace

application/x-bcpio bcpio

application/x-bittorrent torrent

application/x-bzip bz

application/x-bzip2 bz2 boz

application/x-cdlink vcd

application/x-chat chat

application/x-chess-pgn pgn

application/x-compress

application/x-cpio cpio

application/x-csh csh

application/x-director dcr dir dxr fgd

application/x-dvi dvi

application/x-futuresplash spl

application/x-gtar gtar

application/x-gzip

application/x-hdf hdf

application/x-latex latex

application/x-ms-wmd wmd

application/x-ms-wmz wmz

application/x-msaccess mdb

application/x-msbinder obd

application/x-mscardfile crd

application/x-msclip clp

application/x-msdownload exe dll com bat msi

application/x-msmediaview mvb m13 m14

application/x-msmetafile wmf

application/x-msmoney mny

application/x-mspublisher pub

application/x-msschedule scd

application/x-msterminal trm

application/x-mswrite wri

application/x-netcdf nc cdf

application/x-pkcs12 p12 pfx

application/x-pkcs7-certificates p7b spc

application/x-pkcs7-certreqresp p7r

application/x-rar-compressed rar

application/x-sh sh

application/x-shar shar

application/x-shockwave-flash swf

application/x-stuffit sit

application/x-stuffitx sitx

application/x-sv4cpio sv4cpio

application/x-sv4crc sv4crc

application/x-tar tar

application/x-tcl tcl

application/x-tex tex

application/x-texinfo texinfo texi

application/x-ustar ustar

application/x-wais-source src

application/x-x509-ca-cert der crt

application/x400-bp

application/xcap-att+xml

application/xcap-caps+xml

application/xcap-el+xml

application/xcap-error+xml

application/xcap-ns+xml

application/xenc+xml xenc

application/xhtml+xml xhtml xht

application/xml xml xsl

application/xml-dtd dtd

application/xml-external-parsed-entity

application/xmpp+xml

application/xop+xml xop

application/xslt+xml xslt

application/xspf+xml xspf

application/xv+xml mxml xhvml xvml xvm

application/zip zip

audio/32kadpcm

audio/3gpp

audio/3gpp2

audio/ac3

audio/amr

audio/amr-wb

audio/amr-wb+

audio/asc

audio/basic au snd

audio/bv16

audio/bv32

audio/clearmode

audio/cn

audio/dat12

audio/dls

audio/dsr-es201108

audio/dsr-es202050

audio/dsr-es202211

audio/dsr-es202212

audio/dvi4

audio/eac3

audio/evrc

audio/evrc-qcp

audio/evrc0

audio/evrc1

audio/evrcb

audio/evrcb0

audio/evrcb1

audio/evrcwb

audio/evrcwb0

audio/evrcwb1

audio/g722

audio/g7221

audio/g723

audio/g726-16

audio/g726-24

audio/g726-32

audio/g726-40

audio/g728

audio/g729

audio/g7291

audio/g729d

audio/g729e

audio/gsm

audio/gsm-efr

audio/ilbc

audio/l16

audio/l20

audio/l24

audio/l8

audio/lpc

audio/midi mid midi kar rmi

audio/mobile-xmf

audio/mp4 mp4a

audio/mp4a-latm

audio/mpa

audio/mpa-robust

audio/mpeg mpga mp2 mp2a mp3 m2a m3a

audio/mpeg4-generic

audio/ogg oga ogg spx

audio/parityfec

audio/pcma

audio/pcmu

audio/prs.sid

audio/qcelp

audio/red

audio/rtp-enc-aescm128

audio/rtp-midi

audio/rtx

audio/smv

audio/smv0

audio/smv-qcp

audio/sp-midi

audio/t140c

audio/t38

audio/telephone-event

audio/tone

audio/ulpfec

audio/vdvi

audio/vmr-wb

audio/vnd.3gpp.iufp

audio/vnd.4sb

audio/vnd.audiokoz

audio/vnd.celp

audio/vnd.cisco.nse

audio/vnd.cmles.radio-events

audio/vnd.cns.anp1

audio/vnd.cns.inf1

audio/vnd.digital-winds eol

audio/vnd.dlna.adts

audio/vnd.dolby.mlp

audio/vnd.dts dts

audio/vnd.dts.hd dtshd

audio/vnd.everad.plj

audio/vnd.hns.audio

audio/vnd.lucent.voice lvp

audio/vnd.ms-playready.media.pya pya

audio/vnd.nokia.mobile-xmf

audio/vnd.nortel.vbk

audio/vnd.nuera.ecelp4800 ecelp4800

audio/vnd.nuera.ecelp7470 ecelp7470

audio/vnd.nuera.ecelp9600 ecelp9600

audio/vnd.octel.sbc

audio/vnd.qcelp

audio/vnd.rhetorex.32kadpcm

audio/vnd.sealedmedia.softseal.mpeg

audio/vnd.vmx.cvsd

audio/vorbis

audio/vorbis-config

audio/wav wav

audio/x-aiff aif aiff aifc

audio/x-mpegurl m3u

audio/x-ms-wax wax

audio/x-ms-wma wma

audio/x-pn-realaudio ram ra

audio/x-pn-realaudio-plugin rmp

audio/x-wav wav

chemical/x-cdx cdx

chemical/x-cif cif

chemical/x-cmdf cmdf

chemical/x-cml cml

chemical/x-csml csml

chemical/x-pdb pdb

chemical/x-xyz xyz

image/bmp bmp

image/cgm cgm

image/fits

image/g3fax g3

image/gif gif

image/ief ief

image/jp2

image/jpeg jpeg jpg jpe

image/jpm

image/jpx

image/naplps

image/png png

image/prs.btif btif

image/prs.pti

image/svg+xml svg svgz

image/t38

image/tiff tiff tif

image/tiff-fx

image/vnd.adobe.photoshop psd

image/vnd.cns.inf2

image/vnd.djvu djvu djv

image/vnd.dwg dwg

image/vnd.dxf dxf

image/vnd.fastbidsheet fbs

image/vnd.fpx fpx

image/vnd.fst fst

image/vnd.fujixerox.edmics-mmr mmr

image/vnd.fujixerox.edmics-rlc rlc

image/vnd.globalgraphics.pgb

image/vnd.microsoft.icon

image/vnd.mix

image/vnd.ms-modi mdi

image/vnd.net-fpx npx

image/vnd.sealed.png

image/vnd.sealedmedia.softseal.gif

image/vnd.sealedmedia.softseal.jpg

image/vnd.svf

image/vnd.wap.wbmp wbmp

image/vnd.xiff xif

image/x-cmu-raster ras

image/x-cmx cmx

image/x-icon ico

image/x-pcx pcx

image/x-pict pic pct

image/x-portable-anymap pnm

image/x-portable-bitmap pbm

image/x-portable-graymap pgm

image/x-portable-pixmap ppm

image/x-rgb rgb

image/x-xbitmap xbm

image/x-xpixmap xpm

image/x-xwindowdump xwd

message/cpim

message/delivery-status

message/disposition-notification

message/external-body

message/global

message/global-delivery-status

message/global-disposition-notification

message/global-headers

message/http

message/news

message/partial

message/rfc822 eml mime

message/s-http

message/sip

message/sipfrag

message/tracking-status

message/vnd.si.simp

model/iges igs iges

model/mesh msh mesh silo

model/vnd.dwf dwf

model/vnd.flatland.3dml

model/vnd.gdl gdl

model/vnd.gs.gdl

model/vnd.gtw gtw

model/vnd.moml+xml

model/vnd.mts mts

model/vnd.parasolid.transmit.binary

model/vnd.parasolid.transmit.text

model/vnd.vtu vtu

model/vrml wrl vrml

multipart/alternative

multipart/appledouble

multipart/byteranges

multipart/digest

multipart/encrypted

multipart/form-data

multipart/header-set

multipart/mixed

multipart/parallel

multipart/related

multipart/report

multipart/signed

multipart/voice-message

text/calendar ics ifb

text/css css

text/csv csv

text/directory

text/dns

text/enriched

text/html html htm

text/parityfec

text/plain txt text conf def list log in

text/prs.fallenstein.rst

text/prs.lines.tag dsc

text/red

text/rfc822-headers

text/richtext rtx

text/rtf

text/rtp-enc-aescm128

text/rtx

text/sgml sgml sgm

text/t140

text/tab-separated-values tsv

text/troff t tr roff man me ms

text/ulpfec

text/uri-list uri uris urls

text/vnd.abc

text/vnd.curl

text/vnd.dmclientscript

text/vnd.esmertec.theme-descriptor

text/vnd.fly fly

text/vnd.fmi.flexstor flx

text/vnd.graphviz gv

text/vnd.in3d.3dml 3dml

text/vnd.in3d.spot spot

text/vnd.iptc.newsml

text/vnd.iptc.nitf

text/vnd.latex-z

text/vnd.motorola.reflex

text/vnd.ms-mediapackage

text/vnd.net2phone.commcenter.command

text/vnd.si.uricatalogue

text/vnd.sun.j2me.app-descriptor jad

text/vnd.trolltech.linguist

text/vnd.wap.si

text/vnd.wap.sl

text/vnd.wap.wml wml

text/vnd.wap.wmlscript wmls

text/x-asm s asm

text/x-c c cc cxx cpp h hh dic

text/x-fortran f for f77 f90

text/x-pascal p pas

text/x-java-source java

text/x-setext etx

text/x-uuencode uu

text/x-vcalendar vcs

text/x-vcard vcf

text/xml

text/xml-external-parsed-entity

video/3gpp 3gp

video/3gpp-tt

video/3gpp2 3g2

video/bmpeg

video/bt656

video/celb

video/dv

video/h261 h261

video/h263 h263

video/h263-1998

video/h263-2000

video/h264 h264

video/jpeg jpgv

video/jpeg2000

video/jpm jpm jpgm

video/mj2 mj2 mjp2

video/mp1s

video/mp2p

video/mp2t

video/mp4 mp4 mp4v mpg4

video/mp4v-es

video/mpeg mpeg mpg mpe m1v m2v

video/mpeg4-generic

video/mpv

video/nv

video/ogg ogv

video/parityfec

video/pointer

video/quicktime qt mov

video/raw

video/rtp-enc-aescm128

video/rtx

video/smpte292m

video/ulpfec

video/vc1

video/vnd.cctv

video/vnd.dlna.mpeg-tts

video/vnd.fvt fvt

video/vnd.hns.video

video/vnd.iptvforum.1dparityfec-1010

video/vnd.iptvforum.1dparityfec-2005

video/vnd.iptvforum.2dparityfec-1010

video/vnd.iptvforum.2dparityfec-2005

video/vnd.iptvforum.ttsavc

video/vnd.iptvforum.ttsmpeg2

video/vnd.motorola.video

video/vnd.motorola.videop

video/vnd.mpegurl mxu m4u

video/vnd.ms-playready.media.pyv pyv

video/vnd.nokia.interleaved-multimedia

video/vnd.nokia.videovoip

video/vnd.objectvideo

video/vnd.sealed.mpeg1

video/vnd.sealed.mpeg4

video/vnd.sealed.swf

video/vnd.sealedmedia.softseal.mov

video/vnd.vivo viv

video/x-fli fli

video/x-ms-asf asf asx

video/x-ms-wm wm

video/x-ms-wmv wmv

video/x-ms-wmx wmx

video/x-ms-wvx wvx

video/x-msvideo avi

video/x-sgi-movie movie

x-conference/x-cooltalk ice

 

 

nota: Eu também uso php 5.2, e não tenho essas extensões doidas ai que o Evandro e o João usam..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como parece que seu servidor ou é muito 'chulé' ou é muito restritivo a ponto de você não poder fazer uma operação simples como essa, você teria de fazer manualmente, comparando com um super-mega-array de MIME-Types.

 

Para sua sorte, um tempo atrás precisei disso também, e como não conseguia pelo mesmo motivo, montei o meu próprio e, para isso, caçei em diversos sites, arquivos, referências e etc. tantos MIME's quantos eu pude encontrar e montei minha lista.

 

Sem OOP, você faria algo como:

 

function getExtension( $filename ) {
   return substr( $filename, strrpos( $filename, '.' ) + 1 );
}

function getMimeFromExt( $filename ) {

   global $mtypes;

   return array_search_recursive( getExtension( $filename ), $mtypes );
}

/**
* @author  "James"
* @link    http-~~-//br3.php.net/manual/en/function.array-search.php#95926
*/
function array_search_recursive( $needle, $haystack, $partial_matches = false, $search_keys = false ) {

   if( ! is_array( $haystack ) ) {
       return false;
   }

   foreach( $haystack as $key => $value ) {

       $what = ( $search_keys ) ? $key : $value;

       if( $needle === $what ) {
           return $key;

       } elseif( $partial_matches && strpos( $what, $needle ) !== FALSE ) {
           return $key;

       } else if( is_array( $value ) && array_search_recursive( $needle, $value, $partial_matches, $search_keys ) !== FALSE ) {
           return $key;
       }
   }

   return FALSE;
}

Considerações:

 

$mtypes, variável considerada global (porque aqui reimplementei sem OOP) é a tal mega-matriz.

 

Há a necessidade de um array_search_recursive() pois alguns MIME-Types pertencem a mais de uma extensão, logo, numa estrtutura de array, esse caso ficaria:

 

$mtypes = array( 'mime' => array( 'ext1', 'ext2', 'ext3' ) );

 

E, agora a minha lista que, mesmo descontinuada, suporta 439 MIME's:

 

 

$mtypes=array( 'application/x-bytecode.python'              =>  array( 'pyc' ),
                            'application/acad'                             =>  array( 'dwg' ),
                            'application/andrew-inset'                     =>  array( 'ez' ),
                            'application/arj'                              =>  array( 'arj' ),
                            'application/astound'                          =>  array( 'asd', 'asn' ),
                            'application/base64'                           =>  array( 'mme' ),
                            'application/binhex'                           =>  array( 'hqx' ),
                            'application/binhex4'                          =>  array( 'hqx' ),
                            'application/book'                             =>  array( 'boo', 'book' ),
                            'application/cdf'                              =>  array( 'cdf' ),
                            'application/clariscad'                        =>  array( 'ccad' ),
                            'application/commonground'                     =>  array( 'dp' ),
                            'application/drafting'                         =>  array( 'drw' ),
                            'application/dsptype'                          =>  array( 'tsp' ),
                            'application/dxf'                              =>  array( 'dxf' ),
                            'application/envoy'                            =>  array( 'evy' ),
                            'application/excel'                            =>  array( 'xl', 'xla', 'xlb', 'xlc', 'xld', 'xlk',
                                                                                      'xll', 'xlm', 'xls', 'xlt', 'xlv', 'xlw'),
                           'application/fractals'                          =>  array( 'fif' ),
                           'application/freeloader'                        =>  array( 'frl' ),
                           'application/futuresplash'                      =>  array( 'spl' ),
                           'application/gnutar'                            =>  array( 'tgz' ),
                           'application/groupwise'                         =>  array( 'vew' ),
                           'application/hlp'                               =>  array( 'hlp' ),
                           'application/hta'                               =>  array( 'hta' ),
                           'application/i-deas'                            =>  array( 'unv' ),
                           'application/iges'                              =>  array( 'iges', 'igs' ),
                           'application/inf'                               =>  array( 'inf' ),
                           'application/java'                              =>  array( 'class' ),
                           'application/java-byte-code'                    =>  array( 'class' ),
                           'application/lha'                               =>  array( 'lha' ),
                           'application/listenup'                          =>  array( 'ptlk' ),
                           'application/lzx'                               =>  array( 'lzx' ),
                           'application/mac-binary'                        =>  array( 'bin' ),
                           'application/mac-binhex'                        =>  array( 'hqx' ),
                           'application/mac-compactpro'                    =>  array( 'cpt' ),
                           'application/macbinary'                         =>  array( 'bin' ),
                           'application/marc'                              =>  array( 'mrc' ),
                           'application/mbedlet'                           =>  array( 'mbd' ),
                           'application/mcad'                              =>  array( 'mcd' ),
                           'application/mime'                              =>  array( 'aps' ),
                           'application/mshelp'                            =>  array( 'chm' ),
                           'application/mspowerpoint'                      =>  array( 'pot', 'pps', 'ppt', 'ppz' ),
                           'application/msword'                            =>  array( 'doc', 'dot', 'w6w', 'wiz', 'word' ),
                           'application/mswrite'                           =>  array( 'wri' ),
                           'application/netmc'                             =>  array( 'mcp' ),
                           'application/octet-stream'                      =>  array( 'a', 'arc', 'arj', 'bin', 'chr', 'class',
                                                                                      'clx', 'com', 'dat', 'dgr', 'dll', 'dms',
                                                                                      'dump', 'env', 'exe', 'frm', 'lex', 'lha',
                                                                                      'lhx', 'lzh', 'lzx', 'mcd', 'mst', 'mox',
                                                                                      'myi', 'o', 'otf', 'pf', 'pfb', 'pfm',
                                                                                      'prc', 'psd', 'saveme', 'shx', 'sif','so',
                                                                                      'sys', 'tlb', 'tmp', 'uu', 'vm', 'zoo' ),
                           'application/oda'                               =>  array( 'oda' ),
                           'application/pdf'                               =>  array( 'pdf' ),
                           'application/pkcs-12'                           =>  array( 'p12' ),
                           'application/pkcs-crl'                          =>  array( 'crl' ),
                           'application/pkcs10'                            =>  array( 'p10' ),
                           'application/pkcs7-mime'                        =>  array( 'p7c', 'p7m' ),
                           'application/pkcs7-signature'                   =>  array( 'p7x' ),
                           'application/pkix-cert'                         =>  array( 'cer', 'crt' ),
                           'application/pkix-crl'                          =>  array( 'crl' ),
                           'application/plain'                             =>  array( 'text' ),
                           'application/postscript'                        =>  array( 'ai', 'eps', 'ps' ),
                           'application/powerpoint'                        =>  array( 'ppt' ),
                           'application/pro_eng'                           =>  array( 'part', 'prt' ),
                           'application/ringing-tones'                     =>  array( 'rng' ),
                           'application/rtc'                               =>  array( 'rtc' ),
                           'application/rtf'                               =>  array( 'rtf', 'rtx' ),
                           'application/sdp'                               =>  array( 'sdp' ),
                           'application/sea'                               =>  array( 'sea' ),
                           'application/set'                               =>  array( 'set' ),
                           'application/sla'                               =>  array( 'stl' ),
                           'application/smil'                              =>  array( 'smi', 'smil' ),
                           'application/solids'                            =>  array( 'sol' ),
                           'application/sounder'                           =>  array( 'sdr' ),
                           'application/step'                              =>  array( 'step', 'stp' ),
                           'application/studiom'                           =>  array( 'smp' ),
                           'application/toolbook'                          =>  array( 'tbk' ),
                           'application/vda'                               =>  array( 'vda' ),
                           'application/vnd.fdf'                           =>  array( 'fdf' ),
                           'application/vnd.hp-hpgl'                       =>  array( 'hgl', 'hpg', 'hpgl' ),
                           'application/vnd.hp-pcl'                        =>  array( 'pcl' ),
                           'application/vnd.ms-excel'                      =>  array( 'xlb', 'xlc', 'xll', 'xlm', 'xls', 'xlw'),
                           'application/vnd.ms-pki.certstore'              =>  array( 'sst' ),
                           'application/vnd.ms-pki.pko'                    =>  array( 'pko' ),
                           'application/vnd.ms-pki.seccat'                 =>  array( 'cat' ),
                           'application/vnd.ms-pki.stl'                    =>  array( 'stl' ),
                           'application/vnd.ms-powerpoint'                 =>  array( 'pot', 'ppa', 'pps', 'ppt', 'pwz' ),
                           'application/vnd.ms-project'                    =>  array( 'mpp' ),
                           'application/vnd.nokia.configuration-message'   =>  array( 'ncm' ),
                           'application/vnd.nokia.ringing-tone'            =>  array( 'rng' ),
                           'application/vnd.rn-realmedia'                  =>  array( 'rm' ),
                           'application/vnd.rn-realplayer'                 =>  array( 'rnx' ),
                           'application/vnd.wap.wbxml'                     =>  array( 'wbxml' ),
                           'application/vnd.wap.wmlc'                      =>  array( 'wmlc' ),
                           'application/vnd.wap.wmlscriptc'                =>  array( 'wmlsc' ),
                           'application/vnd.xara'                          =>  array( 'web' ),
                           'application/vocaltec-media-desc'               =>  array( 'vmd' ),
                           'application/vocaltec-media-file'               =>  array( 'vmf' ),
                           'application/wordperfect'                       =>  array( 'wp', 'wp5', 'wp6', 'wpd' ),
                           'application/wordperfect6.0'                    =>  array( 'w60', 'wp5' ),
                           'application/wordperfect6.1'                    =>  array( 'w61' ),
                           'application/x-123'                             =>  array( 'tga', 'wk1' ),
                           'application/x-aim'                             =>  array( 'aim' ),
                           'application/x-authorware-bin'                  =>  array( 'aab' ),
                           'application/x-authorware-map'                  =>  array( 'aam' ),
                           'application/x-authorware-seg'                  =>  array( 'aas' ),
                           'application/x-bcpio'                           =>  array( 'bcpio' ),
                           'application/x-binary'                          =>  array( 'bin' ),
                           'application/x-binhex40'                        =>  array( 'hqx' ),
                           'application/x-bittorrent'                      =>  array( 'torrent' ),
                           'application/x-bsh'                             =>  array( 'bsh', 'sh', 'shar' ),
                           'application/x-bytecode.elisp'                  =>  array( 'elc' ),
                           'application/x-bzip'                            =>  array( 'bz' ),
                           'application/x-bzip2'                           =>  array( 'boz', 'bz2' ),
                           'application/x-cdf'                             =>  array( 'cdf' ),
                           'application/x-cdlink'                          =>  array( 'vcd' ),
                           'application/x-chat'                            =>  array( 'cha', 'chat' ),
                           'application/x-chess-pgn'                       =>  array( 'pgn' ),
                           'application/x-cmu-raster'                      =>  array( 'ras' ),
                           'application/x-cocoa'                           =>  array( 'cco' ),
                           'application/x-compactpro'                      =>  array( 'cpt' ),
                           'application/x-compress'                        =>  array( 'z' ),
                           'application/x-compressed'                      =>  array( 'gz', 'tgz', 'z', 'zip' ),
                           'application/x-conference'                      =>  array( 'nsc' ),
                           'application/x-cpio'                            =>  array( 'cpio' ),
                           'application/x-cpt'                             =>  array( 'cpt' ),
                           'application/x-csh'                             =>  array( 'csh' ),
                           'application/x-deepv'                           =>  array( 'deepv' ),
                           'application/x-director'                        =>  array( 'dcr', 'dir', 'dxr' ),
                           'application/x-dosexec'                         =>  array( '8bi', '8bx', 'acm', 'apl', 'arx', 'bpl',
                                                                                      'cpl', 'fon', 'mui', 'scr', 'sfx', 'smrd',
                                                                                      'vsl', 'x3d' ),
                           'application/x-dvi'                             =>  array( 'dvi' ),
                           'application/x-elc'                             =>  array( 'elc' ),
                           'application/x-envoy'                           =>  array( 'env', 'evy' ),
                           'application/x-esrehber'                        =>  array( 'es' ),
                           'application/x-excel'                           =>  array( 'xla', 'xlb', 'xlc', 'xld', 'xlk', 'xll',
                                                                                      'xlm', 'xls', 'xlt', 'xlv', 'xlw' ),
                           'application/x-frame'                           =>  array( 'mif' ),
                           'application/x-freelance'                       =>  array( 'pre' ),
                           'application/x-gsp'                             =>  array( 'gsp' ),
                           'application/x-gss'                             =>  array( 'gss' ),
                           'application/x-gtar'                            =>  array( 'gtar' ),
                           'application/x-gzip'                            =>  array( 'gz', 'gzip' ),
                           'application/x-hdf'                             =>  array( 'hdf' ),
                           'application/x-helpfile'                        =>  array( 'help', 'hlp' ),
                           'application/x-httpd-imap'                      =>  array( 'imap' ),
                           'application/x-httpd-php'                       =>  array( 'php3', 'php4', 'php', 'phtml' ),
                           'application/x-ima'                             =>  array( 'ima' ),
                           'application/x-internett-signup'                =>  array( 'ins' ),
                           'application/x-inventor'                        =>  array( 'iv' ),
                           'application/x-ip2'                             =>  array( 'ip' ),
                           'application/x-java-class'                      =>  array( 'class' ),
                           'application/x-java-commerce'                   =>  array( 'jcm' ),
                           'application/x-javascript'                      =>  array( 'js' ),
                           'application/x-koan'                            =>  array( 'skd', 'skm', 'skp', 'skt' ),
                           'application/x-ksh'                             =>  array( 'ksh' ),
                           'application/x-latex'                           =>  array( 'latex', 'ltx' ),
                           'application/x-lha'                             =>  array( 'lha' ),
                           'application/x-lisp'                            =>  array( 'lsp' ),
                           'application/x-livescreen'                      =>  array( 'ivy' ),
                           'application/x-lotus'                           =>  array( 'wq1' ),
                           'application/x-lotusscreencam'                  =>  array( 'scm' ),
                           'application/x-lzh'                             =>  array( 'lzh' ),
                           'application/x-lzx'                             =>  array( 'lzx' ),
                           'application/x-mac-binhex40'                    =>  array( 'hqx' ),
                           'application/x-macbinary'                       =>  array( 'bin' ),
                           'application/x-magic-cap-package-1.0'           =>  array( 'mc$' ),
                           'application/x-mathcad'                         =>  array( 'mcd' ),
                           'application/x-meme'                            =>  array( 'mm' ),
                           'application/x-midi'                            =>  array( 'mid', 'midi' ),
                           'application/x-mif'                             =>  array( 'mif' ),
                           'application/x-mix-transfer'                    =>  array( 'nix' ),
                           'application/x-mplayer2'                        =>  array( 'asx' ),
                           'application/x-msexcel'                         =>  array( 'xla', 'xls', 'xlw' ),
                           'application/x-mspowerpoint'                    =>  array( 'ppt' ),
                           'application/x-navi-animation'                  =>  array( 'ani' ),
                           'application/x-navidoc'                         =>  array( 'nvd' ),
                           'application/x-navimap'                         =>  array( 'map' ),
                           'application/x-navistyle'                       =>  array( 'stl' ),
                           'application/x-netcdf'                          =>  array( 'cdf', 'nc' ),
                           'application/x-newton-compatible-pkg'           =>  array( 'pkg' ),
'application/x-nokia-9000-communicator-add-on-software'                     =>  array( 'aos' ), // Wow!!!
                           'application/x-omc'                             =>  array( 'omc' ),
                           'application/x-omcdatamaker'                    =>  array( 'omcd' ),
                           'application/x-omcregerator'                    =>  array( 'omcr' ),
                           'application/x-pagemaker'                       =>  array( 'pm4', 'pm5' ),
                           'application/x-pcl'                             =>  array( 'pcl' ),
                           'application/x-pixclscript'                     =>  array( 'plx' ),
                           'application/x-pkcs10'                          =>  array( 'p10' ),
                           'application/x-pkcs12'                          =>  array( 'p12' ),
                           'application/x-pkcs7-certificates'              =>  array( 'spc' ),
                           'application/x-pkcs7-certreqresp'               =>  array( 'p7r' ),
                           'application/x-pkcs7-mime'                      =>  array( 'p7c', 'p7m' ),
                           'application/x-pkcs7-signature'                 =>  array( 'p7z' ),
                           'application/x-pointplus'                       =>  array( 'css' ),
                           'application/x-portable-anymap'                 =>  array( 'pnm' ),
                           'application/x-project'                         =>  array( 'mpc', 'mpt', 'mpv', 'mpx' ),
                           'application/x-qpro'                            =>  array( 'wb1' ),
                           'application/x-rtf'                             =>  array( 'rtf' ),
                           'application/x-sdp'                             =>  array( 'sdp' ),
                           'application/x-sea'                             =>  array( 'sea' ),
                           'application/x-seelogo'                         =>  array( 'sl' ),
                           'application/x-sh'                              =>  array( 'sh' ),
                           'application/x-shar'                            =>  array( 'sh', 'shar' ),
                           'application/x-shockwave-flash'                 =>  array( 'cab', 'swf' ),
                           'application/x-sit'                             =>  array( 'sit' ),
                           'application/x-sprite'                          =>  array( 'spr', 'sprite' ),
                           'application/x-stuffit'                         =>  array( 'sit' ),
                           'application/x-supercard'                       =>  array( 'sca' ),
                           'application/x-sv4cpio'                         =>  array( 'sv4cpio' ),
                           'application/x-sv4crc'                          =>  array( 'sv4crc' ),
                           'application/x-tar'                             =>  array( 'tar' ),
                           'application/x-tbook'                           =>  array( 'sbk', 'tbk' ),
                           'application/x-tcl'                             =>  array( 'tcl' ),
                           'application/x-tex'                             =>  array( 'tex' ),
                           'application/x-texinfo'                         =>  array( 'texi', 'texinfo' ),
                           'application/x-troff'                           =>  array( 'roff', 't', 'tr' ),
                           'application/x-troff-man'                       =>  array( 'man' ),
                           'application/x-troff-me'                        =>  array( 'me' ),
                           'application/x-troff-ms'                        =>  array( 'ms', 'troff' ),
                           'application/x-troff-msvideo'                   =>  array( 'avi' ),
                           'application/x-ustar'                           =>  array( 'ustar' ),
                           'application/x-visio'                           =>  array( 'vsd', 'vst', 'vsw' ),
                           'application/x-vnd.audioexplosion.mzz'          =>  array( 'mzz' ),
                           'application/x-vnd.ls-xpix'                     =>  array( 'xpix' ),
                           'application/x-vrml'                            =>  array( 'vrml' ),
                           'application/x-wais-source'                     =>  array( 'src', 'wsrc' ),
                           'application/x-winhelp'                         =>  array( 'hlp' ),
                           'application/x-wintalk'                         =>  array( 'wtk' ),
                           'application/x-world'                           =>  array( 'svr', 'wri' ),
                           'application/x-wpwin'                           =>  array( 'wpd' ),
                           'application/x-wri'                             =>  array( 'wri' ),
                           'application/x-x509-ca-cert'                    =>  array( 'cer', 'crt', 'der' ),
                           'application/x-x509-user-cert'                  =>  array( 'crt' ),
                           'application/x-zip-compressed'                  =>  array( 'zip' ),
                           'application/xhtml+xml'                         =>  array( 'xht', 'xhtml' ),
                           'application/xml'                               =>  array( 'manifest', 'wsc', 'xdc', 'xml', 'xsl' ),
                           'application/zip'                               =>  array( 'jar', 'xlsx', 'zip' ),
                           'appliction/x-dosexec'                          =>  array( 'ocx' ),
                           'audio/aiff'                                    =>  array( 'aif', 'aifc', 'aiff' ),
                           'audio/basic'                                   =>  array( 'au', 'snd' ),
                           'audio/it'                                      =>  array( 'it' ),
                           'audio/make'                                    =>  array( 'funk', 'my', 'pfunk' ),
                           'audio/make.my.funk'                            =>  array( 'pfunk' ),
                           'audio/mid'                                     =>  array( 'rmi' ),
                           'audio/midi'                                    =>  array( 'kar', 'mid', 'midi' ),
                           'audio/mod'                                     =>  array( 'mode' ),
                           'audio/mpeg'                                    =>  array( 'm2a', 'mpa', 'mpg', 'mpga' ),
                           'audio/mpeg3'                                   =>  array( 'mp3' ),
                           'audio/nspaudio'                                =>  array( 'la', 'lma' ),
                           'audio/s3m'                                     =>  array( 's3m' ),
                           'audio/tsp-audio'                               =>  array( 'tsi' ),
                           'audio/tsplayer'                                =>  array( 'tsp' ),
                           'audio/vnd.qcelp'                               =>  array( 'qcp' ),
                           'audio/voc'                                     =>  array( 'voc' ),
                           'audio/voxware'                                 =>  array( 'vox' ),
                           'audio/wav'                                     =>  array( 'wav' ),
                           'audio/x-adpcm'                                 =>  array( 'snd' ),
                           'audio/x-aiff'                                  =>  array( 'aif', 'aifc', 'aiff' ),
                           'audio/x-au'                                    =>  array( 'au' ),
                           'audio/x-dspeeh'                                =>  array( 'cht', 'dus' ),
                           'audio/x-gsm'                                   =>  array( 'gsd', 'gsm' ),
                           'audio/x-jam'                                   =>  array( 'jam' ),
                           'audio/x-liveaudio'                             =>  array( 'lam' ),
                           'audio/x-mid'                                   =>  array( 'mid', 'midi' ),
                           'audio/x-midi'                                  =>  array( 'mid', 'midi' ),
                           'audio/x-mod'                                   =>  array( 'mode' ),
                           'audio/x-mpeg'                                  =>  array( 'mp2' ),
                           'audio/x-mpeg-3'                                =>  array( 'mp3' ),
                           'audio/x-mpequrl'                               =>  array( 'm3u' ),
                           'audio/x-nspaudio'                              =>  array( 'la', 'lma' ),
                           'audio/x-pn-realaudio'                          =>  array( 'ra', 'ram', 'rm', 'rmm', 'rmp' ),
                           'audio/x-pn-realaudio-plugin'                   =>  array( 'ra', 'rmp', 'rpm' ),
                           'audio/x-psid'                                  =>  array( 'sid' ),
                           'audio/x-qt-stream'                             =>  array( 'stream' ),
                           'audio/x-realaudio'                             =>  array( 'ra' ),
                           'audio/x-twinvq'                                =>  array( 'vqf' ),
                           'audio/x-twinvq-plugin'                         =>  array( 'vqe', 'vql' ),
                           'audio/x-vnd.audioexplosion.mjuicemediafile'    =>  array( 'mjf' ),
                           'audio/x-voc'                                   =>  array( 'voc' ),
                           'audio/x-wav'                                   =>  array( 'wav' ),
                           'audio/xm'                                      =>  array( 'xm' ),
                           'cgi-script'                                    =>  array( 'cgi' ),
                           'chemical/x-pdb'                                =>  array( 'pdb' ),
                           'chemical/x-xyz'                                =>  array( 'xyz' ),
                           'drawing/x-dwf'                                 =>  array( 'dwf' ),
                           'i-world/i-vrml'                                =>  array( 'ivr' ),
                           'image/bmp'                                     =>  array( 'bm', 'bmp' ),
                           'image/cis-cod'                                 =>  array( 'cod' ),
                           'image/cmu-raster'                              =>  array( 'rast' ),
                           'image/fif'                                     =>  array( 'fif' ),
                           'image/florian'                                 =>  array( 'flo', 'turbot' ),
                           'image/g3fax'                                   =>  array( 'g3' ),
                           'image/gif'                                     =>  array( 'gif' ),
                           'image/ief'                                     =>  array( 'ief', 'iefs' ),
                           'image/jpeg'                                    =>  array( 'jfif', 'jfif-tbnl', 'jpe', 'jpeg', 'jpg'),
                           'image/jutvision'                               =>  array( 'jut' ),
                           'image/naplps'                                  =>  array( 'nap', 'naplps' ),
                           'image/pict'                                    =>  array( 'pic', 'pict' ),
                           'image/pjpeg'                                   =>  array( 'jfif', 'jpe', 'jpeg', 'jpg' ),
                           'image/png'                                     =>  array( 'png', 'x-png' ),
                           'image/tiff'                                    =>  array( 'tif', 'tiff' ),
                           'image/vasa'                                    =>  array( 'mcf' ),
                           'image/vnd.djvu'                                =>  array( 'djv', 'djvu' ),
                           'image/vnd.dwg'                                 =>  array( 'dwg', 'dxf', 'svf' ),
                           'image/vnd.fpx'                                 =>  array( 'fpx' ),
                           'image/vnd.net-fpx'                             =>  array( 'fpx' ),
                           'image/vnd.rn-realflash'                        =>  array( 'rf' ),
                           'image/vnd.rn-realpix'                          =>  array( 'rp' ),
                           'image/vnd.wap.wbmp'                            =>  array( 'wbmp' ),
                           'image/vnd.xiff'                                =>  array( 'xif' ),
                           'image/x-cmu-raster'                            =>  array( 'ras' ),
                           'image/x-dwg'                                   =>  array( 'dwg', 'dxf', 'svf' ),
                           'image/x-freehand'                              =>  array( 'fh4', 'fh5', 'fhc' ),
                           'image/x-icon'                                  =>  array( 'ico' ),
                           'image/x-jg'                                    =>  array( 'art' ),
                           'image/x-jps'                                   =>  array( 'jps' ),
                           'image/x-niff'                                  =>  array( 'nif', 'niff' ),
                           'image/x-pcx'                                   =>  array( 'pcx' ),
                           'image/x-pict'                                  =>  array( 'pct' ),
                           'image/x-portable-anymap'                       =>  array( 'pnm' ),
                           'image/x-portable-bitmap'                       =>  array( 'pbm' ),
                           'image/x-portable-graymap'                      =>  array( 'pgm' ),
                           'image/x-portable-greymap'                      =>  array( 'pgm' ),
                           'image/x-portable-pixmap'                       =>  array( 'ppm' ),
                           'image/x-quicktime'                             =>  array( 'qif', 'qti', 'qtif' ),
                           'image/x-rgb'                                   =>  array( 'rgb' ),
                           'image/x-tiff'                                  =>  array( 'tif', 'tiff' ),
                           'image/x-windows-bmp'                           =>  array( 'bmp' ),
                           'image/x-xbitmap'                               =>  array( 'xbm' ),
                           'image/x-xbm'                                   =>  array( 'xbm' ),
                           'image/x-xpixmap'                               =>  array( 'pm', 'xpm' ),
                           'image/x-xwd'                                   =>  array( 'xwd' ),
                           'image/x-xwindowdump'                           =>  array( 'xwd' ),
                           'image/xbm'                                     =>  array( 'xbm' ),
                           'image/xpm'                                     =>  array( 'xpm' ),
                           'message/rfc822'                                =>  array( 'mht', 'mhtml', 'mime' ),
                           'model/iges'                                    =>  array( 'iges', 'igs' ),
                           'model/mesh'                                    =>  array( 'msh', 'mesh', 'silo' ),
                           'model/vnd.dwf'                                 =>  array( 'dwf' ),
                           'model/vrml'                                    =>  array( 'vrml', 'wrl', 'wrz' ),
                           'model/x-pov'                                   =>  array( 'pov' ),
                           'multipart/x-gzip'                              =>  array( 'gzip' ),
                           'multipart/x-ustar'                             =>  array( 'ustar' ),
                           'multipart/x-zip'                               =>  array( 'zip' ),
                           'music/crescendo'                               =>  array( 'mid', 'midi' ),
                           'music/x-karaoke'                               =>  array( 'kar' ),
                           'paleovu/x-pv'                                  =>  array( 'pvu' ),
                           'text/asp'                                      =>  array( 'asp' ),
                           'text/comma-separated-values'                   =>  array( 'csv' ),
                           'text/css'                                      =>  array( 'css' ),
                           'text/fortran'                                  =>  array( 'f90' ),
                           'text/html'                                     =>  array( 'acgi', 'htm', 'html',
                                                                                      'htmls', 'htx', 'shtml' ),
                           'text/mcf'                                      =>  array( 'mcf' ),
                           'text/pascal'                                   =>  array( 'pas' ),
                           'text/plain'                                    =>  array( 'asc', 'c', 'c++', 'cc', 'ccp', 'chs',
                                                                                      'cnt', 'com', 'conf', 'cxx', 'def', 'f', 
                                                                                      'f90', 'for', 'g', 'h', 'hh', 'idc', 'jav',
                                                                                      'java', 'joboptions', 'list', 'log', 'lst',
                                                                                      'm', 'mar', 'pl', 'ppd', 'prx', 'reg',
                                                                                      'sdml', 'text', 'txt', 'vbs', 'zdct' ),
                           'text/richtext'                                 =>  array( 'rt', 'rtf', 'rtx' ),
                           'text/scriplet'                                 =>  array( 'wsc' ),
                           'text/sgml'                                     =>  array( 'sgm', 'sgml' ),
                           'text/tab-separated-values'                     =>  array( 'tsv' ),
                           'text/uri-list'                                 =>  array( 'uni', 'unis', 'uri', 'uris' ),
                           'text/vnd.abc'                                  =>  array( 'abc' ),
                           'text/vnd.fmi.flexstor'                         =>  array( 'flx' ),
                           'text/vnd.rn-realtext'                          =>  array( 'rt' ),
                           'text/vnd.wap.wml'                              =>  array( 'wml' ),
                           'text/vnd.wap.wmlscript'                        =>  array( 'wmls' ),
                           'text/webviewhtml'                              =>  array( 'htt' ),
                           'text/x-asm'                                    =>  array( 'asm', 's' ),
                           'text/x-audiosoft-intra'                        =>  array( 'aip' ),
                           'text/x-c'                                      =>  array( 'c', 'cc', 'cpp', 'jsx' ),
                           'text/x-component'                              =>  array( 'htc' ),
                           'text/x-fortran'                                =>  array( 'f', 'f77', 'for' ),
                           'text/x-h'                                      =>  array( 'h', 'hh' ),
                           'text/x-java-source'                            =>  array( 'jav', 'java' ),
                           'text/x-la-asf'                                 =>  array( 'lsx' ),
                           'text/x-m'                                      =>  array( 'm' ),
                           'text/x-msdos-batch'                            =>  array( 'cmd' ),
                           'text/x-pascal'                                 =>  array( 'p' ),
                           'text/x-script'                                 =>  array( 'hlb' ),
                           'text/x-script.csh'                             =>  array( 'csh' ),
                           'text/x-script.elisp'                           =>  array( 'el' ),
                           'text/x-script.guile'                           =>  array( 'scm' ),
                           'text/x-script.ksh'                             =>  array( 'ksh' ),
                           'text/x-script.lisp'                            =>  array( 'lsp' ),
                           'text/x-script.perl'                            =>  array( 'pl' ),
                           'text/x-script.perl-module'                     =>  array( 'pm' ),
                           'text/x-script.phyton'                          =>  array( 'py' ),
                           'text/x-script.rexx'                            =>  array( 'rexx' ),
                           'text/x-script.scheme'                          =>  array( 'scm' ),
                           'text/x-script.sh'                              =>  array( 'sh' ),
                           'text/x-script.tcl'                             =>  array( 'tcl' ),
                           'text/x-script.tcsh'                            =>  array( 'tcsh' ),
                           'text/x-script.zsh'                             =>  array( 'zsh' ),
                           'text/x-server-parsed-html'                     =>  array( 'shtml', 'ssi', 'ssm' ),
                           'text/x-setext'                                 =>  array( 'ext' ),
                           'text/x-sgml'                                   =>  array( 'sgm', 'sgml' ),
                           'text/x-speech'                                 =>  array( 'spc', 'talk' ),
                           'text/x-uil'                                    =>  array( 'uil' ),
                           'text/x-uuencode'                               =>  array( 'uu', 'uue' ),
                           'text/x-vcalendar'                              =>  array( 'vcs' ),
                           'text/xml'                                      =>  array( 'xml' ),
                           'video/animaflex'                               =>  array( 'afl' ),
                           'video/avi'                                     =>  array( 'avi' ),
                           'video/avs-video'                               =>  array( 'avs' ),
                           'video/dl'                                      =>  array( 'dl' ),
                           'video/fli'                                     =>  array( 'fli' ),
                           'video/gl'                                      =>  array( 'gl' ),
                           'video/mpeg'                                    =>  array( 'm1v', 'm2v', 'mp2', 'mp3', 'mpa',
                                                                                      'mpe', 'mpeg', 'mpg' ),
                           'video/msvideo'                                 =>  array( 'avi' ),
                           'video/quicktime'                               =>  array( 'moov', 'mov' ),
                           'video/vdo'                                     =>  array( 'vdo' ),
                           'video/vivo'                                    =>  array( 'viv', 'vivo' ),
                           'video/vnd.mpegurl'                             =>  array( 'mxu' ),
                           'video/vnd.rn-realvideo'                        =>  array( 'rv' ),
                           'video/vnd.vivo'                                =>  array( 'viv', 'vivo' ),
                           'video/vosaic'                                  =>  array( 'vos' ),
                           'video/x-amt-demorun'                           =>  array( 'xdr' ),
                           'video/x-amt-showrun'                           =>  array( 'xsr' ),
                           'video/x-atomic3d-feature'                      =>  array( 'fmf' ),
                           'video/x-dl'                                    =>  array( 'dl' ),
                           'video/x-dv'                                    =>  array( 'dif', 'dv' ),
                           'video/x-fli'                                   =>  array( 'fli' ),
                           'video/x-flv'                                   =>  array( 'flv' ),
                           'video/x-gl'                                    =>  array( 'gl' ),
                           'video/x-isvideo'                               =>  array( 'isu' ),
                           'video/x-motion-jpeg'                           =>  array( 'mjpg' ),
                           'video/x-mpeg'                                  =>  array( 'mp2', 'mp2', 'mp3' ),
                           'video/x-mpeq2a'                                =>  array( 'mp2' ),
                           'video/x-ms-asf'                                =>  array( 'asf' ),
                           'video/x-ms-asf-plugin'                         =>  array( 'asx' ),
                           'video/x-msvideo'                               =>  array( 'avi' ),
                           'video/x-qtc'                                   =>  array( 'qtc' ),
                           'video/x-quicktime'                             =>  array( 'qt' ),
                           'video/x-scm'                                   =>  array( 'scm' ),
                           'video/x-sgi-movie'                             =>  array( 'movie', 'mv' ),
                           'windows/metafile'                              =>  array( 'wmf' ),
                           'workbook/formulaone'                           =>  array( 'vts', 'vtts' ),
                           'www/mime'                                      =>  array( 'mime' ),
                           'x-conference/x-cooltalk'                       =>  array( 'ice' ),
                           'x-music/x-midi'                                =>  array( 'mid', 'midi' ),
                           'x-world/x-3dmf'                                =>  array( '3dm', '3dmf', 'qd3', 'qd3d' ),
                           'x-world/x-svr'                                 =>  array( 'svr' ),
                           'x-world/x-vrml'                                =>  array( 'vrml', 'wrl', 'wrz' ),
                           'x-world/x-vrt'                                 =>  array( 'vrt' ),
                           'xgl/drawing'                                   =>  array( 'xgz' ),
                           'xgl/movie'                                     =>  array( 'xmz' ),
                       );

 

Se você tiver algum outro, pode adicionar manualmente se preferir.

 

[ EDIT ]

 

Como eu demorei pra responder, o William beio antes com a solução via arquivo mime.types

 

Só uma consideração que eu faço é que esse arquivo foi incluído como parte dessa lista que montei, porém, não usei apenas ele pois haviam muitas outras mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mime_content_type

 

(PHP 4 >= 4.3.0, PHP 5)

 

mime_content_type — Detect MIME Content-type for a file (deprecated)

http://br2.php.net/manual/en/function.mime-content-type.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

mime_content_type

 

(PHP 4 >= 4.3.0, PHP 5)

 

mime_content_type — Detect MIME Content-type for a file (deprecated)

http://br2.php.net/manual/en/function.mime-content-type.php

 

Aí é que mora o perigo. E se ele usar essa função nativa e, "de repente", o PHP 6 (por exemplo) é lançado oficialmente e o host dele decide pular da versão atual direto para última.

 

Acho que ele deve fazer algo mais sólido que considere todas as hipóteses. Talvez, se usar uma classe, criar um método de checagem de versão do PHP e existência das funções a serem usadas.

 

Acredito que seja mais seguro dessa forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função original do João servia para 5.3+

A adição que eu fiz cobria 5.3-

A segunda adição tentava carregar a biblioteca finfo caso a mesma estivesse inativa.

 

Tudo sem sucesso. Servidor sem suporte a Fileinfo, seja 5.2, 5.3 ou 6.0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é possível fazer isso, devido tanto à restrições do próprio PHP quanto aos paths usados ou com incompatibilidades da própria biblioteca, mas você pode tentar baixar o PHP correspondente ao seu servidor no seu PC, copiar o arquivo da biblioteca para algum diretório o qual você tenha acesso e apontar esse novo path para dl().

 

Assim, a chamada à dl() não geraria esse erro que você citou, já que a biblioteca estaria sendo carregada de um local que você definiu como certeza de existir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas respostas pessoal.

 

Mas meu problema é o seguinte, estou utilizando SWF Upload. Utilizando flash o retorno é sempre application/octet-stream após realizar o upload.

 

A idéia é verificar o tipo de arquivo já no servidor, através do caminho.

 

Através dos últimos exemplos, se o usuário renomeia a extensão, ele vai conseguir burlar o retorno do mime type.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@hargon

 

Pela minha experiência com ContentTypes, de qualquer forma, o usuário poderá burlar o mime-type sem sombra de dúvidas.

 

A questão é limitar essa ocorrência com algumas das soluções apresentadas aqui, anteriormente.

 

Mas já lhe adianto: a verificação do ContentType de um arquivo no server-side é falha - por enquanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok pessoal,

 

Content-Type :seta: Tipo de conteúdo, então, ficar olhando a extensão do arquivo nunca vai ser confiável. A solução deve olhar o conteúdo do arquivo.

 

A solução abaixo é baseada no comando file :seta: http://linux.die.net/man/1/file

 

É um primeiro alpha, mas já deve resolver o problema, depois vou preparar uma versão para o novo formato do magic e publico ela novamente.

 

xiita_mode=On

:seta: http://rpo.improjeto...br/magic.tar.gz

 

Para usar:

<?php
require 'rpo/file/magic/MimeMagicFile.php';

try {
$magic = new MimeMagicFile();

var_dump( $magic->getMimeType( new LocalFile( 'arquivo.png' ) ) );
var_dump( $magic->getMimeType( new LocalFile( 'arquivo.jpg' ) ) );
var_dump( $magic->getMimeType( new LocalFile( 'arquivo.pdf' ) ) );
} catch ( RuntimeException $e ){
echo $e->getMessage() , PHP_EOL;
}

 

 

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom João. Mandou bem no código.

 

Funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.