Um certo dia trabalhando até mais tarde, percebi que o módulo de anexo do sistema em que trabalho parou de funcionar quando realizei um teste no Opera. Assustado com esse fato, porque não tinha realizado nenhuma alteração na funcionalidade do upload de arquivo, começei a "debugar" o código e percebi que quando recuperava o content-type de uma imagem com extensão .jpg no server-side sendo que a requisição tinha sido enviada pelo IE, era retornado "image/pjpeg" e quando usava Opera ou outro navegador era retornado "image/jpeg", ou seja, dependendo de que navegador se utilize existe uma diferença de MIME types.
Para entendermos melhor o assunto vamos entender como as coisas funcionam. Os MIME types são similares às extensões dos arquivos mas mais universalmente aceitos, os MIME types são usados para indentificar o tipo da informacão que o arquivo contém. Enquanto a extensão do arquivo .html é informalmente entendida como uma página HTML, não existe exigência que um arquivo com a extensão .html signifique de fato que o arquivo é uma página HTML. Páginas HTML podem ter diferentes extensões.
No protocolo HTTP usado pelo browsers para se comunicar com os servidores, a extensão do arquivo da URL não é usado para determinar o tipo da informação que o servidor irá retornar, De fato, pode não existir a extensão do arquivo no final da URL.
Ao invés de usar a extensão do arquivo para se guiar, o servidor especifica o correto MIME type usando o header Content-type quando ele responde à requisição feita pelo browser.
Abaixo segue uma lista completa de MIME type
Conteúdo do post encontrado nos site:
http://www.boutell.com/newfaq/definitions/mimetype.html
http://reference.sitepoint.com/html/mime-types-full
Leia Mais ››
Para entendermos melhor o assunto vamos entender como as coisas funcionam. Os MIME types são similares às extensões dos arquivos mas mais universalmente aceitos, os MIME types são usados para indentificar o tipo da informacão que o arquivo contém. Enquanto a extensão do arquivo .html é informalmente entendida como uma página HTML, não existe exigência que um arquivo com a extensão .html signifique de fato que o arquivo é uma página HTML. Páginas HTML podem ter diferentes extensões.
No protocolo HTTP usado pelo browsers para se comunicar com os servidores, a extensão do arquivo da URL não é usado para determinar o tipo da informação que o servidor irá retornar, De fato, pode não existir a extensão do arquivo no final da URL.
Ao invés de usar a extensão do arquivo para se guiar, o servidor especifica o correto MIME type usando o header Content-type quando ele responde à requisição feita pelo browser.
Abaixo segue uma lista completa de MIME type
Conteúdo do post encontrado nos site:
http://www.boutell.com/newfaq/definitions/mimetype.html
http://reference.sitepoint.com/html/mime-types-full
Table 1. Complete list of MIME types | |
---|---|
Suffixes applicable | Media type and subtype(s) |
.3dm | x-world/x-3dmf |
.3dmf | x-world/x-3dmf |
.a | application/octet-stream |
.aab | application/x-authorware-bin |
.aam | application/x-authorware-map |
.aas | application/x-authorware-seg |
.abc | text/vnd.abc |
.acgi | text/html |
.afl | video/animaflex |
.ai | application/postscript |
.aif | audio/aiff |
.aif | audio/x-aiff |
.aifc | audio/aiff |
.aifc | audio/x-aiff |
.aiff | audio/aiff |
.aiff | audio/x-aiff |
.aim | application/x-aim |
.aip | text/x-audiosoft-intra |
.ani | application/x-navi-animation |
.aos | application/x-nokia-9000-communicator-add-on-software |
.aps | application/mime |
.arc | application/octet-stream |
.arj | application/arj |
.arj | application/octet-stream |
.art | image/x-jg |
.asf | video/x-ms-asf |
.asm | text/x-asm |
.asp | text/asp |
.asx | application/x-mplayer2 |
.asx | video/x-ms-asf |
.asx | video/x-ms-asf-plugin |
.au | audio/basic |
.au | audio/x-au |
.avi | application/x-troff-msvideo |
.avi | video/avi |
.avi | video/msvideo |
.avi | video/x-msvideo |
.avs | video/avs-video |
.bcpio | application/x-bcpio |
.bin | application/mac-binary |
.bin | application/macbinary |
.bin | application/octet-stream |
.bin | application/x-binary |
.bin | application/x-macbinary |
.bm | image/bmp |
.bmp | image/bmp |
.bmp | image/x-windows-bmp |
.boo | application/book |
.book | application/book |
.boz | application/x-bzip2 |
.bsh | application/x-bsh |
.bz | application/x-bzip |
.bz2 | application/x-bzip2 |
.c | text/plain |
.c | text/x-c |
.c++ | text/plain |
.cat | application/vnd.ms-pki.seccat |
.cc | text/plain |
.cc | text/x-c |
.ccad | application/clariscad |
.cco | application/x-cocoa |
.cdf | application/cdf |
.cdf | application/x-cdf |
.cdf | application/x-netcdf |
.cer | application/pkix-cert |
.cer | application/x-x509-ca-cert |
.cha | application/x-chat |
.chat | application/x-chat |
.class | application/java |
.class | application/java-byte-code |
.class | application/x-java-class |
.com | application/octet-stream |
.com | text/plain |
.conf | text/plain |
.cpio | application/x-cpio |
.cpp | text/x-c |
.cpt | application/mac-compactpro |
.cpt | application/x-compactpro |
.cpt | application/x-cpt |
.crl | application/pkcs-crl |
.crl | application/pkix-crl |
.crt | application/pkix-cert |
.crt | application/x-x509-ca-cert |
.crt | application/x-x509-user-cert |
.csh | application/x-csh |
.csh | text/x-script.csh |
.css | application/x-pointplus |
.css | text/css |
.cxx | text/plain |
.dcr | application/x-director |
.deepv | application/x-deepv |
.def | text/plain |
.der | application/x-x509-ca-cert |
.dif | video/x-dv |
.dir | application/x-director |
.dl | video/dl |
.dl | video/x-dl |
.doc | application/msword |
.dot | application/msword |
.dp | application/commonground |
.drw | application/drafting |
.dump | application/octet-stream |
.dv | video/x-dv |
.dvi | application/x-dvi |
.dwf | drawing/x-dwf (old) |
.dwf | model/vnd.dwf |
.dwg | application/acad |
.dwg | image/vnd.dwg |
.dwg | image/x-dwg |
.dxf | application/dxf |
.dxf | image/vnd.dwg |
.dxf | image/x-dwg |
.dxr | application/x-director |
.el | text/x-script.elisp |
.elc | application/x-bytecode.elisp (compiled elisp) |
.elc | application/x-elc |
.env | application/x-envoy |
.eps | application/postscript |
.es | application/x-esrehber |
.etx | text/x-setext |
.evy | application/envoy |
.evy | application/x-envoy |
.exe | application/octet-stream |
.f | text/plain |
.f | text/x-fortran |
.f77 | text/x-fortran |
.f90 | text/plain |
.f90 | text/x-fortran |
.fdf | application/vnd.fdf |
.fif | application/fractals |
.fif | image/fif |
.fli | video/fli |
.fli | video/x-fli |
.flo | image/florian |
.flx | text/vnd.fmi.flexstor |
.fmf | video/x-atomic3d-feature |
.for | text/plain |
.for | text/x-fortran |
.fpx | image/vnd.fpx |
.fpx | image/vnd.net-fpx |
.frl | application/freeloader |
.funk | audio/make |
.g | text/plain |
.g3 | image/g3fax |
.gif | image/gif |
.gl | video/gl |
.gl | video/x-gl |
.gsd | audio/x-gsm |
.gsm | audio/x-gsm |
.gsp | application/x-gsp |
.gss | application/x-gss |
.gtar | application/x-gtar |
.gz | application/x-compressed |
.gz | application/x-gzip |
.gzip | application/x-gzip |
.gzip | multipart/x-gzip |
.h | text/plain |
.h | text/x-h |
.hdf | application/x-hdf |
.help | application/x-helpfile |
.hgl | application/vnd.hp-hpgl |
.hh | text/plain |
.hh | text/x-h |
.hlb | text/x-script |
.hlp | application/hlp |
.hlp | application/x-helpfile |
.hlp | application/x-winhelp |
.hpg | application/vnd.hp-hpgl |
.hpgl | application/vnd.hp-hpgl |
.hqx | application/binhex |
.hqx | application/binhex4 |
.hqx | application/mac-binhex |
.hqx | application/mac-binhex40 |
.hqx | application/x-binhex40 |
.hqx | application/x-mac-binhex40 |
.hta | application/hta |
.htc | text/x-component |
.htm | text/html |
.html | text/html |
.htmls | text/html |
.htt | text/webviewhtml |
.htx | text/html |
.ice | x-conference/x-cooltalk |
.ico | image/x-icon |
.idc | text/plain |
.ief | image/ief |
.iefs | image/ief |
.iges | application/iges |
.iges | model/iges |
.igs | application/iges |
.igs | model/iges |
.ima | application/x-ima |
.imap | application/x-httpd-imap |
.inf | application/inf |
.ins | application/x-internett-signup |
.ip | application/x-ip2 |
.isu | video/x-isvideo |
.it | audio/it |
.iv | application/x-inventor |
.ivr | i-world/i-vrml |
.ivy | application/x-livescreen |
.jam | audio/x-jam |
.jav | text/plain |
.jav | text/x-java-source |
.java | text/plain |
.java | text/x-java-source |
.jcm | application/x-java-commerce |
.jfif | image/jpeg |
.jfif | image/pjpeg |
.jfif-tbnl | image/jpeg |
.jpe | image/jpeg |
.jpe | image/pjpeg |
.jpeg | image/jpeg |
.jpeg | image/pjpeg |
.jpg | image/jpeg |
.jpg | image/pjpeg |
.jps | image/x-jps |
.js | application/x-javascript |
.js | application/javascript |
.js | application/ecmascript |
.js | text/javascript |
.js | text/ecmascript |
.jut | image/jutvision |
.kar | audio/midi |
.kar | music/x-karaoke |
.ksh | application/x-ksh |
.ksh | text/x-script.ksh |
.la | audio/nspaudio |
.la | audio/x-nspaudio |
.lam | audio/x-liveaudio |
.latex | application/x-latex |
.lha | application/lha |
.lha | application/octet-stream |
.lha | application/x-lha |
.lhx | application/octet-stream |
.list | text/plain |
.lma | audio/nspaudio |
.lma | audio/x-nspaudio |
.log | text/plain |
.lsp | application/x-lisp |
.lsp | text/x-script.lisp |
.lst | text/plain |
.lsx | text/x-la-asf |
.ltx | application/x-latex |
.lzh | application/octet-stream |
.lzh | application/x-lzh |
.lzx | application/lzx |
.lzx | application/octet-stream |
.lzx | application/x-lzx |
.m | text/plain |
.m | text/x-m |
.m1v | video/mpeg |
.m2a | audio/mpeg |
.m2v | video/mpeg |
.m3u | audio/x-mpequrl |
.man | application/x-troff-man |
.map | application/x-navimap |
.mar | text/plain |
.mbd | application/mbedlet |
.mc$ | application/x-magic-cap-package-1.0 |
.mcd | application/mcad |
.mcd | application/x-mathcad |
.mcf | image/vasa |
.mcf | text/mcf |
.mcp | application/netmc |
.me | application/x-troff-me |
.mht | message/rfc822 |
.mhtml | message/rfc822 |
.mid | application/x-midi |
.mid | audio/midi |
.mid | audio/x-mid |
.mid | audio/x-midi |
.mid | music/crescendo |
.mid | x-music/x-midi |
.midi | application/x-midi |
.midi | audio/midi |
.midi | audio/x-mid |
.midi | audio/x-midi |
.midi | music/crescendo |
.midi | x-music/x-midi |
.mif | application/x-frame |
.mif | application/x-mif |
.mime | message/rfc822 |
.mime | www/mime |
.mjf | audio/x-vnd.audioexplosion.mjuicemediafile |
.mjpg | video/x-motion-jpeg |
.mm | application/base64 |
.mm | application/x-meme |
.mme | application/base64 |
.mod | audio/mod |
.mod | audio/x-mod |
.moov | video/quicktime |
.mov | video/quicktime |
.movie | video/x-sgi-movie |
.mp2 | audio/mpeg |
.mp2 | audio/x-mpeg |
.mp2 | video/mpeg |
.mp2 | video/x-mpeg |
.mp2 | video/x-mpeq2a |
.mp3 | audio/mpeg3 |
.mp3 | audio/x-mpeg-3 |
.mp3 | video/mpeg |
.mp3 | video/x-mpeg |
.mpa | audio/mpeg |
.mpa | video/mpeg |
.mpc | application/x-project |
.mpe | video/mpeg |
.mpeg | video/mpeg |
.mpg | audio/mpeg |
.mpg | video/mpeg |
.mpga | audio/mpeg |
.mpp | application/vnd.ms-project |
.mpt | application/x-project |
.mpv | application/x-project |
.mpx | application/x-project |
.mrc | application/marc |
.ms | application/x-troff-ms |
.mv | video/x-sgi-movie |
.my | audio/make |
.mzz | application/x-vnd.audioexplosion.mzz |
.nap | image/naplps |
.naplps | image/naplps |
.nc | application/x-netcdf |
.ncm | application/vnd.nokia.configuration-message |
.nif | image/x-niff |
.niff | image/x-niff |
.nix | application/x-mix-transfer |
.nsc | application/x-conference |
.nvd | application/x-navidoc |
.o | application/octet-stream |
.oda | application/oda |
.omc | application/x-omc |
.omcd | application/x-omcdatamaker |
.omcr | application/x-omcregerator |
.p | text/x-pascal |
.p10 | application/pkcs10 |
.p10 | application/x-pkcs10 |
.p12 | application/pkcs-12 |
.p12 | application/x-pkcs12 |
.p7a | application/x-pkcs7-signature |
.p7c | application/pkcs7-mime |
.p7c | application/x-pkcs7-mime |
.p7m | application/pkcs7-mime |
.p7m | application/x-pkcs7-mime |
.p7r | application/x-pkcs7-certreqresp |
.p7s | application/pkcs7-signature |
.part | application/pro_eng |
.pas | text/pascal |
.pbm | image/x-portable-bitmap |
.pcl | application/vnd.hp-pcl |
.pcl | application/x-pcl |
.pct | image/x-pict |
.pcx | image/x-pcx |
.pdb | chemical/x-pdb |
application/pdf | |
.pfunk | audio/make |
.pfunk | audio/make.my.funk |
.pgm | image/x-portable-graymap |
.pgm | image/x-portable-greymap |
.pic | image/pict |
.pict | image/pict |
.pkg | application/x-newton-compatible-pkg |
.pko | application/vnd.ms-pki.pko |
.pl | text/plain |
.pl | text/x-script.perl |
.plx | application/x-pixclscript |
.pm | image/x-xpixmap |
.pm | text/x-script.perl-module |
.pm4 | application/x-pagemaker |
.pm5 | application/x-pagemaker |
.png | image/png |
.pnm | application/x-portable-anymap |
.pnm | image/x-portable-anymap |
.pot | application/mspowerpoint |
.pot | application/vnd.ms-powerpoint |
.pov | model/x-pov |
.ppa | application/vnd.ms-powerpoint |
.ppm | image/x-portable-pixmap |
.pps | application/mspowerpoint |
.pps | application/vnd.ms-powerpoint |
.ppt | application/mspowerpoint |
.ppt | application/powerpoint |
.ppt | application/vnd.ms-powerpoint |
.ppt | application/x-mspowerpoint |
.ppz | application/mspowerpoint |
.pre | application/x-freelance |
.prt | application/pro_eng |
.ps | application/postscript |
.psd | application/octet-stream |
.pvu | paleovu/x-pv |
.pwz | application/vnd.ms-powerpoint |
.py | text/x-script.phyton |
.pyc | applicaiton/x-bytecode.python |
.qcp | audio/vnd.qcelp |
.qd3 | x-world/x-3dmf |
.qd3d | x-world/x-3dmf |
.qif | image/x-quicktime |
.qt | video/quicktime |
.qtc | video/x-qtc |
.qti | image/x-quicktime |
.qtif | image/x-quicktime |
.ra | audio/x-pn-realaudio |
.ra | audio/x-pn-realaudio-plugin |
.ra | audio/x-realaudio |
.ram | audio/x-pn-realaudio |
.ras | application/x-cmu-raster |
.ras | image/cmu-raster |
.ras | image/x-cmu-raster |
.rast | image/cmu-raster |
.rexx | text/x-script.rexx |
.rf | image/vnd.rn-realflash |
.rgb | image/x-rgb |
.rm | application/vnd.rn-realmedia |
.rm | audio/x-pn-realaudio |
.rmi | audio/mid |
.rmm | audio/x-pn-realaudio |
.rmp | audio/x-pn-realaudio |
.rmp | audio/x-pn-realaudio-plugin |
.rng | application/ringing-tones |
.rng | application/vnd.nokia.ringing-tone |
.rnx | application/vnd.rn-realplayer |
.roff | application/x-troff |
.rp | image/vnd.rn-realpix |
.rpm | audio/x-pn-realaudio-plugin |
.rt | text/richtext |
.rt | text/vnd.rn-realtext |
.rtf | application/rtf |
.rtf | application/x-rtf |
.rtf | text/richtext |
.rtx | application/rtf |
.rtx | text/richtext |
.rv | video/vnd.rn-realvideo |
.s | text/x-asm |
.s3m | audio/s3m |
.saveme | application/octet-stream |
.sbk | application/x-tbook |
.scm | application/x-lotusscreencam |
.scm | text/x-script.guile |
.scm | text/x-script.scheme |
.scm | video/x-scm |
.sdml | text/plain |
.sdp | application/sdp |
.sdp | application/x-sdp |
.sdr | application/sounder |
.sea | application/sea |
.sea | application/x-sea |
.set | application/set |
.sgm | text/sgml |
.sgm | text/x-sgml |
.sgml | text/sgml |
.sgml | text/x-sgml |
.sh | application/x-bsh |
.sh | application/x-sh |
.sh | application/x-shar |
.sh | text/x-script.sh |
.shar | application/x-bsh |
.shar | application/x-shar |
.shtml | text/html |
.shtml | text/x-server-parsed-html |
.sid | audio/x-psid |
.sit | application/x-sit |
.sit | application/x-stuffit |
.skd | application/x-koan |
.skm | application/x-koan |
.skp | application/x-koan |
.skt | application/x-koan |
.sl | application/x-seelogo |
.smi | application/smil |
.smil | application/smil |
.snd | audio/basic |
.snd | audio/x-adpcm |
.sol | application/solids |
.spc | application/x-pkcs7-certificates |
.spc | text/x-speech |
.spl | application/futuresplash |
.spr | application/x-sprite |
.sprite | application/x-sprite |
.src | application/x-wais-source |
.ssi | text/x-server-parsed-html |
.ssm | application/streamingmedia |
.sst | application/vnd.ms-pki.certstore |
.step | application/step |
.stl | application/sla |
.stl | application/vnd.ms-pki.stl |
.stl | application/x-navistyle |
.stp | application/step |
.sv4cpio | application/x-sv4cpio |
.sv4crc | application/x-sv4crc |
.svf | image/vnd.dwg |
.svf | image/x-dwg |
.svr | application/x-world |
.svr | x-world/x-svr |
.swf | application/x-shockwave-flash |
.t | application/x-troff |
.talk | text/x-speech |
.tar | application/x-tar |
.tbk | application/toolbook |
.tbk | application/x-tbook |
.tcl | application/x-tcl |
.tcl | text/x-script.tcl |
.tcsh | text/x-script.tcsh |
.tex | application/x-tex |
.texi | application/x-texinfo |
.texinfo | application/x-texinfo |
.text | application/plain |
.text | text/plain |
.tgz | application/gnutar |
.tgz | application/x-compressed |
.tif | image/tiff |
.tif | image/x-tiff |
.tiff | image/tiff |
.tiff | image/x-tiff |
.tr | application/x-troff |
.tsi | audio/tsp-audio |
.tsp | application/dsptype |
.tsp | audio/tsplayer |
.tsv | text/tab-separated-values |
.turbot | image/florian |
.txt | text/plain |
.uil | text/x-uil |
.uni | text/uri-list |
.unis | text/uri-list |
.unv | application/i-deas |
.uri | text/uri-list |
.uris | text/uri-list |
.ustar | application/x-ustar |
.ustar | multipart/x-ustar |
.uu | application/octet-stream |
.uu | text/x-uuencode |
.uue | text/x-uuencode |
.vcd | application/x-cdlink |
.vcs | text/x-vcalendar |
.vda | application/vda |
.vdo | video/vdo |
.vew | application/groupwise |
.viv | video/vivo |
.viv | video/vnd.vivo |
.vivo | video/vivo |
.vivo | video/vnd.vivo |
.vmd | application/vocaltec-media-desc |
.vmf | application/vocaltec-media-file |
.voc | audio/voc |
.voc | audio/x-voc |
.vos | video/vosaic |
.vox | audio/voxware |
.vqe | audio/x-twinvq-plugin |
.vqf | audio/x-twinvq |
.vql | audio/x-twinvq-plugin |
.vrml | application/x-vrml |
.vrml | model/vrml |
.vrml | x-world/x-vrml |
.vrt | x-world/x-vrt |
.vsd | application/x-visio |
.vst | application/x-visio |
.vsw | application/x-visio |
.w60 | application/wordperfect6.0 |
.w61 | application/wordperfect6.1 |
.w6w | application/msword |
.wav | audio/wav |
.wav | audio/x-wav |
.wb1 | application/x-qpro |
.wbmp | image/vnd.wap.wbmp |
.web | application/vnd.xara |
.wiz | application/msword |
.wk1 | application/x-123 |
.wmf | windows/metafile |
.wml | text/vnd.wap.wml |
.wmlc | application/vnd.wap.wmlc |
.wmls | text/vnd.wap.wmlscript |
.wmlsc | application/vnd.wap.wmlscriptc |
.word | application/msword |
.wp | application/wordperfect |
.wp5 | application/wordperfect |
.wp5 | application/wordperfect6.0 |
.wp6 | application/wordperfect |
.wpd | application/wordperfect |
.wpd | application/x-wpwin |
.wq1 | application/x-lotus |
.wri | application/mswrite |
.wri | application/x-wri |
.wrl | application/x-world |
.wrl | model/vrml |
.wrl | x-world/x-vrml |
.wrz | model/vrml |
.wrz | x-world/x-vrml |
.wsc | text/scriplet |
.wsrc | application/x-wais-source |
.wtk | application/x-wintalk |
.xbm | image/x-xbitmap |
.xbm | image/x-xbm |
.xbm | image/xbm |
.xdr | video/x-amt-demorun |
.xgz | xgl/drawing |
.xif | image/vnd.xiff |
.xl | application/excel |
.xla | application/excel |
.xla | application/x-excel |
.xla | application/x-msexcel |
.xlb | application/excel |
.xlb | application/vnd.ms-excel |
.xlb | application/x-excel |
.xlc | application/excel |
.xlc | application/vnd.ms-excel |
.xlc | application/x-excel |
.xld | application/excel |
.xld | application/x-excel |
.xlk | application/excel |
.xlk | application/x-excel |
.xll | application/excel |
.xll | application/vnd.ms-excel |
.xll | application/x-excel |
.xlm | application/excel |
.xlm | application/vnd.ms-excel |
.xlm | application/x-excel |
.xls | application/excel |
.xls | application/vnd.ms-excel |
.xls | application/x-excel |
.xls | application/x-msexcel |
.xlt | application/excel |
.xlt | application/x-excel |
.xlv | application/excel |
.xlv | application/x-excel |
.xlw | application/excel |
.xlw | application/vnd.ms-excel |
.xlw | application/x-excel |
.xlw | application/x-msexcel |
.xm | audio/xm |
.xml | application/xml |
.xml | text/xml |
.xmz | xgl/movie |
.xpix | application/x-vnd.ls-xpix |
.xpm | image/x-xpixmap |
.xpm | image/xpm |
.x-png | image/png |
.xsr | video/x-amt-showrun |
.xwd | image/x-xwd |
.xwd | image/x-xwindowdump |
.xyz | chemical/x-pdb |
.z | application/x-compress |
.z | application/x-compressed |
.zip | application/x-compressed |
.zip | application/x-zip-compressed |
.zip | application/zip |
.zip | multipart/x-zip |
.zoo | application/octet-stream |
.zsh | text/x-script.zsh |