hargon 64 Denunciar post Postado Julho 1, 2010 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
João Batista Neto 448 Denunciar post Postado Julho 2, 2010 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
hargon 64 Denunciar post Postado Julho 5, 2010 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
Evandro Oliveira 331 Denunciar post Postado Julho 5, 2010 <?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
hargon 64 Denunciar post Postado Julho 6, 2010 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
Evandro Oliveira 331 Denunciar post Postado Julho 6, 2010 Ú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
hargon 64 Denunciar post Postado Julho 8, 2010 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
Evandro Oliveira 331 Denunciar post Postado Julho 8, 2010 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
hargon 64 Denunciar post Postado Julho 9, 2010 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
William Bruno 1501 Denunciar post Postado Julho 9, 2010 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 # 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
Bruno Augusto 417 Denunciar post Postado Julho 9, 2010 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
Evandro Oliveira 331 Denunciar post Postado Julho 10, 2010 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
Bruno Augusto 417 Denunciar post Postado Julho 10, 2010 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
Evandro Oliveira 331 Denunciar post Postado Julho 11, 2010 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
Bruno Augusto 417 Denunciar post Postado Julho 11, 2010 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
hargon 64 Denunciar post Postado Julho 14, 2010 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
Daniel Ribeiro 4 Denunciar post Postado Julho 14, 2010 @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
João Batista Neto 448 Denunciar post Postado Julho 15, 2010 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; } Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Julho 15, 2010 Muito bom João. Mandou bem no código. Funcionou Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 15, 2010 Muito bom João. Mandou bem no código. Compartilhar este post Link para o post Compartilhar em outros sites