Here is an (almost) complete file extensions’s MIME in a JSON format.
You can do these examples: MIME["ppt"]
, MIME["docx"]
, etc
{
"x3d": "application/vnd.hzn-3d-crossword",
"3gp": "video/3gpp",
"3g2": "video/3gpp2",
"mseq": "application/vnd.mseq",
"pwn": "application/vnd.3m.post-it-notes",
"plb": "application/vnd.3gpp.pic-bw-large",
"psb": "application/vnd.3gpp.pic-bw-small",
"pvb": "application/vnd.3gpp.pic-bw-var",
"tcap": "application/vnd.3gpp2.tcap",
"7z": "application/x-7z-compressed",
"abw": "application/x-abiword",
"ace": "application/x-ace-compressed",
"acc": "application/vnd.americandynamics.acc",
"acu": "application/vnd.acucobol",
"atc": "application/vnd.acucorp",
"adp": "audio/adpcm",
"aab": "application/x-authorware-bin",
"aam": "application/x-authorware-map",
"aas": "application/x-authorware-seg",
"air": "application/vnd.adobe.air-application-installer-package+zip",
"swf": "application/x-shockwave-flash",
"fxp": "application/vnd.adobe.fxp",
"pdf": "application/pdf",
"ppd": "application/vnd.cups-ppd",
"dir": "application/x-director",
"xdp": "application/vnd.adobe.xdp+xml",
"xfdf": "application/vnd.adobe.xfdf",
"aac": "audio/x-aac",
"ahead": "application/vnd.ahead.space",
"azf": "application/vnd.airzip.filesecure.azf",
"azs": "application/vnd.airzip.filesecure.azs",
"azw": "application/vnd.amazon.ebook",
"ami": "application/vnd.amiga.ami",
"N/A": "application/andrew-inset",
"apk": "application/vnd.android.package-archive",
"cii": "application/vnd.anser-web-certificate-issue-initiation",
"fti": "application/vnd.anser-web-funds-transfer-initiation",
"atx": "application/vnd.antix.game-component",
"dmg": "application/x-apple-diskimage",
"mpkg": "application/vnd.apple.installer+xml",
"aw": "application/applixware",
"mp3": "audio/mpeg",
"les": "application/vnd.hhe.lesson-player",
"swi": "application/vnd.aristanetworks.swi",
"s": "text/x-asm",
"atomcat": "application/atomcat+xml",
"atomsvc": "application/atomsvc+xml",
"atom": "application/atom+xml",
"ac": "application/pkix-attr-cert",
"aif": "audio/x-aiff",
"avi": "video/x-msvideo",
"aep": "application/vnd.audiograph",
"dxf": "image/vnd.dxf",
"dwf": "model/vnd.dwf",
"par": "text/plain-bas",
"bcpio": "application/x-bcpio",
"bin": "application/octet-stream",
"bmp": "image/bmp",
"torrent": "application/x-bittorrent",
"cod": "application/vnd.rim.cod",
"mpm": "application/vnd.blueice.multipass",
"bmi": "application/vnd.bmi",
"sh": "application/x-sh",
"btif": "image/prs.btif",
"rep": "application/vnd.businessobjects",
"bz": "application/x-bzip",
"bz2": "application/x-bzip2",
"csh": "application/x-csh",
"c": "text/x-c",
"cdxml": "application/vnd.chemdraw+xml",
"css": "text/css",
"cdx": "chemical/x-cdx",
"cml": "chemical/x-cml",
"csml": "chemical/x-csml",
"cdbcmsg": "application/vnd.contact.cmsg",
"cla": "application/vnd.claymore",
"c4g": "application/vnd.clonk.c4group",
"sub": "image/vnd.dvb.subtitle",
"cdmia": "application/cdmi-capability",
"cdmic": "application/cdmi-container",
"cdmid": "application/cdmi-domain",
"cdmio": "application/cdmi-object",
"cdmiq": "application/cdmi-queue",
"c11amc": "application/vnd.cluetrust.cartomobile-config",
"c11amz": "application/vnd.cluetrust.cartomobile-config-pkg",
"ras": "image/x-cmu-raster",
"dae": "model/vnd.collada+xml",
"csv": "text/csv",
"cpt": "application/mac-compactpro",
"wmlc": "application/vnd.wap.wmlc",
"cgm": "image/cgm",
"ice": "x-conference/x-cooltalk",
"cmx": "image/x-cmx",
"xar": "application/vnd.xara",
"cmc": "application/vnd.cosmocaller",
"cpio": "application/x-cpio",
"clkx": "application/vnd.crick.clicker",
"clkk": "application/vnd.crick.clicker.keyboard",
"clkp": "application/vnd.crick.clicker.palette",
"clkt": "application/vnd.crick.clicker.template",
"clkw": "application/vnd.crick.clicker.wordbank",
"wbs": "application/vnd.criticaltools.wbs+xml",
"cryptonote": "application/vnd.rig.cryptonote",
"cif": "chemical/x-cif",
"cmdf": "chemical/x-cmdf",
"cu": "application/cu-seeme",
"cww": "application/prs.cww",
"curl": "text/vnd.curl",
"dcurl": "text/vnd.curl.dcurl",
"mcurl": "text/vnd.curl.mcurl",
"scurl": "text/vnd.curl.scurl",
"car": "application/vnd.curl.car",
"pcurl": "application/vnd.curl.pcurl",
"cmp": "application/vnd.yellowriver-custom-menu",
"dssc": "application/dssc+der",
"xdssc": "application/dssc+xml",
"deb": "application/x-debian-package",
"uva": "audio/vnd.dece.audio",
"uvi": "image/vnd.dece.graphic",
"uvh": "video/vnd.dece.hd",
"uvm": "video/vnd.dece.mobile",
"uvu": "video/vnd.uvvu.mp4",
"uvp": "video/vnd.dece.pd",
"uvs": "video/vnd.dece.sd",
"uvv": "video/vnd.dece.video",
"dvi": "application/x-dvi",
"seed": "application/vnd.fdsn.seed",
"dtb": "application/x-dtbook+xml",
"res": "application/x-dtbresource+xml",
"ait": "application/vnd.dvb.ait",
"svc": "application/vnd.dvb.service",
"eol": "audio/vnd.digital-winds",
"djvu": "image/vnd.djvu",
"dtd": "application/xml-dtd",
"mlp": "application/vnd.dolby.mlp",
"wad": "application/x-doom",
"dpg": "application/vnd.dpgraph",
"dra": "audio/vnd.dra",
"dfac": "application/vnd.dreamfactory",
"dts": "audio/vnd.dts",
"dtshd": "audio/vnd.dts.hd",
"dwg": "image/vnd.dwg",
"geo": "application/vnd.dynageo",
"es": "application/ecmascript",
"mag": "application/vnd.ecowin.chart",
"mmr": "image/vnd.fujixerox.edmics-mmr",
"rlc": "image/vnd.fujixerox.edmics-rlc",
"exi": "application/exi",
"mgz": "application/vnd.proteus.magazine",
"epub": "application/epub+zip",
"eml": "message/rfc822",
"nml": "application/vnd.enliven",
"xpr": "application/vnd.is-xpr",
"xif": "image/vnd.xiff",
"xfdl": "application/vnd.xfdl",
"emma": "application/emma+xml",
"ez2": "application/vnd.ezpix-album",
"ez3": "application/vnd.ezpix-package",
"fst": "image/vnd.fst",
"fvt": "video/vnd.fvt",
"fbs": "image/vnd.fastbidsheet",
"fe_launch": "application/vnd.denovo.fcselayout-link",
"f4v": "video/x-f4v",
"flv": "video/x-flv",
"fpx": "image/vnd.fpx",
"npx": "image/vnd.net-fpx",
"flx": "text/vnd.fmi.flexstor",
"fli": "video/x-fli",
"ftc": "application/vnd.fluxtime.clip",
"fdf": "application/vnd.fdf",
"f": "text/x-fortran",
"mif": "application/vnd.mif",
"fm": "application/vnd.framemaker",
"fh": "image/x-freehand",
"fsc": "application/vnd.fsc.weblaunch",
"fnc": "application/vnd.frogans.fnc",
"ltf": "application/vnd.frogans.ltf",
"ddd": "application/vnd.fujixerox.ddd",
"xdw": "application/vnd.fujixerox.docuworks",
"xbd": "application/vnd.fujixerox.docuworks.binder",
"oas": "application/vnd.fujitsu.oasys",
"oa2": "application/vnd.fujitsu.oasys2",
"oa3": "application/vnd.fujitsu.oasys3",
"fg5": "application/vnd.fujitsu.oasysgp",
"bh2": "application/vnd.fujitsu.oasysprs",
"spl": "application/x-futuresplash",
"fzs": "application/vnd.fuzzysheet",
"g3": "image/g3fax",
"gmx": "application/vnd.gmx",
"gtw": "model/vnd.gtw",
"txd": "application/vnd.genomatix.tuxedo",
"ggb": "application/vnd.geogebra.file",
"ggt": "application/vnd.geogebra.tool",
"gdl": "model/vnd.gdl",
"gex": "application/vnd.geometry-explorer",
"gxt": "application/vnd.geonext",
"g2w": "application/vnd.geoplan",
"g3w": "application/vnd.geospace",
"gsf": "application/x-font-ghostscript",
"bdf": "application/x-font-bdf",
"gtar": "application/x-gtar",
"texinfo": "application/x-texinfo",
"gnumeric": "application/x-gnumeric",
"kml": "application/vnd.google-earth.kml+xml",
"kmz": "application/vnd.google-earth.kmz",
"gqf": "application/vnd.grafeq",
"gif": "image/gif",
"gv": "text/vnd.graphviz",
"gac": "application/vnd.groove-account",
"ghf": "application/vnd.groove-help",
"gim": "application/vnd.groove-identity-message",
"grv": "application/vnd.groove-injector",
"gtm": "application/vnd.groove-tool-message",
"tpl": "application/vnd.groove-tool-template",
"vcg": "application/vnd.groove-vcard",
"h261": "video/h261",
"h263": "video/h263",
"h264": "video/h264",
"hpid": "application/vnd.hp-hpid",
"hps": "application/vnd.hp-hps",
"hdf": "application/x-hdf",
"rip": "audio/vnd.rip",
"hbci": "application/vnd.hbci",
"jlt": "application/vnd.hp-jlyt",
"pcl": "application/vnd.hp-pcl",
"hpgl": "application/vnd.hp-hpgl",
"hvs": "application/vnd.yamaha.hv-script",
"hvd": "application/vnd.yamaha.hv-dic",
"hvp": "application/vnd.yamaha.hv-voice",
"sfd-hdstx": "application/vnd.hydrostatix.sof-data",
"stk": "application/hyperstudio",
"hal": "application/vnd.hal+xml",
"html": "text/html",
"irm": "application/vnd.ibm.rights-management",
"sc": "application/vnd.ibm.secure-container",
"ics": "text/calendar",
"icc": "application/vnd.iccprofile",
"ico": "image/x-icon",
"igl": "application/vnd.igloader",
"ief": "image/ief",
"ivp": "application/vnd.immervision-ivp",
"ivu": "application/vnd.immervision-ivu",
"rif": "application/reginfo+xml",
"3dml": "text/vnd.in3d.3dml",
"spot": "text/vnd.in3d.spot",
"igs": "model/iges",
"i2g": "application/vnd.intergeo",
"cdy": "application/vnd.cinderella",
"xpw": "application/vnd.intercon.formnet",
"fcs": "application/vnd.isac.fcs",
"ipfix": "application/ipfix",
"cer": "application/pkix-cert",
"pki": "application/pkixcmp",
"crl": "application/pkix-crl",
"pkipath": "application/pkix-pkipath",
"igm": "application/vnd.insors.igm",
"rcprofile": "application/vnd.ipunplugged.rcprofile",
"irp": "application/vnd.irepository.package+xml",
"jad": "text/vnd.sun.j2me.app-descriptor",
"jar": "application/java-archive",
"class": "application/java-vm",
"jnlp": "application/x-java-jnlp-file",
"ser": "application/java-serialized-object",
"java": "text/x-java-source,java",
"js": "application/javascript",
"json": "application/json",
"joda": "application/vnd.joost.joda-archive",
"jpm": "video/jpm",
"jpeg": "image/x-citrix-jpeg",
"jpg": "image/x-citrix-jpeg",
"pjpeg": "image/pjpeg",
"jpgv": "video/jpeg",
"ktz": "application/vnd.kahootz",
"mmd": "application/vnd.chipnuts.karaoke-mmd",
"karbon": "application/vnd.kde.karbon",
"chrt": "application/vnd.kde.kchart",
"kfo": "application/vnd.kde.kformula",
"flw": "application/vnd.kde.kivio",
"kon": "application/vnd.kde.kontour",
"kpr": "application/vnd.kde.kpresenter",
"ksp": "application/vnd.kde.kspread",
"kwd": "application/vnd.kde.kword",
"htke": "application/vnd.kenameaapp",
"kia": "application/vnd.kidspiration",
"kne": "application/vnd.kinar",
"sse": "application/vnd.kodak-descriptor",
"lasxml": "application/vnd.las.las+xml",
"latex": "application/x-latex",
"lbd": "application/vnd.llamagraphics.life-balance.desktop",
"lbe": "application/vnd.llamagraphics.life-balance.exchange+xml",
"jam": "application/vnd.jam",
"123": "application/vnd.lotus-1-2-3",
"apr": "application/vnd.lotus-approach",
"pre": "application/vnd.lotus-freelance",
"nsf": "application/vnd.lotus-notes",
"org": "application/vnd.lotus-organizer",
"scm": "application/vnd.lotus-screencam",
"lwp": "application/vnd.lotus-wordpro",
"lvp": "audio/vnd.lucent.voice",
"m3u": "audio/x-mpegurl",
"m4v": "video/x-m4v",
"hqx": "application/mac-binhex40",
"portpkg": "application/vnd.macports.portpkg",
"mgp": "application/vnd.osgeo.mapguide.package",
"mrc": "application/marc",
"mrcx": "application/marcxml+xml",
"mxf": "application/mxf",
"nbp": "application/vnd.wolfram.player",
"ma": "application/mathematica",
"mathml": "application/mathml+xml",
"mbox": "application/mbox",
"mc1": "application/vnd.medcalcdata",
"mscml": "application/mediaservercontrol+xml",
"cdkey": "application/vnd.mediastation.cdkey",
"mwf": "application/vnd.mfer",
"mfm": "application/vnd.mfmp",
"msh": "model/mesh",
"mads": "application/mads+xml",
"mets": "application/mets+xml",
"mods": "application/mods+xml",
"meta4": "application/metalink4+xml",
"mcd": "application/vnd.mcd",
"flo": "application/vnd.micrografx.flo",
"igx": "application/vnd.micrografx.igx",
"es3": "application/vnd.eszigno3+xml",
"mdb": "application/x-msaccess",
"asf": "video/x-ms-asf",
"exe": "application/x-msdownload",
"cil": "application/vnd.ms-artgalry",
"cab": "application/vnd.ms-cab-compressed",
"ims": "application/vnd.ms-ims",
"application": "application/x-ms-application",
"clp": "application/x-msclip",
"mdi": "image/vnd.ms-modi",
"eot": "application/vnd.ms-fontobject",
"xls": "application/vnd.ms-excel",
"xlam": "application/vnd.ms-excel.addin.macroenabled.12",
"xlsb": "application/vnd.ms-excel.sheet.binary.macroenabled.12",
"xltm": "application/vnd.ms-excel.template.macroenabled.12",
"xlsm": "application/vnd.ms-excel.sheet.macroenabled.12",
"chm": "application/vnd.ms-htmlhelp",
"crd": "application/x-mscardfile",
"lrm": "application/vnd.ms-lrm",
"mvb": "application/x-msmediaview",
"mny": "application/x-msmoney",
"pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
"sldx": "application/vnd.openxmlformats-officedocument.presentationml.slide",
"ppsx": "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
"potx": "application/vnd.openxmlformats-officedocument.presentationml.template",
"xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"xltx": "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
"docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"dotx": "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
"obd": "application/x-msbinder",
"thmx": "application/vnd.ms-officetheme",
"onetoc": "application/onenote",
"pya": "audio/vnd.ms-playready.media.pya",
"pyv": "video/vnd.ms-playready.media.pyv",
"ppt": "application/vnd.ms-powerpoint",
"ppam": "application/vnd.ms-powerpoint.addin.macroenabled.12",
"sldm": "application/vnd.ms-powerpoint.slide.macroenabled.12",
"pptm": "application/vnd.ms-powerpoint.presentation.macroenabled.12",
"ppsm": "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
"potm": "application/vnd.ms-powerpoint.template.macroenabled.12",
"mpp": "application/vnd.ms-project",
"pub": "application/x-mspublisher",
"scd": "application/x-msschedule",
"xap": "application/x-silverlight-app",
"stl": "application/vnd.ms-pki.stl",
"cat": "application/vnd.ms-pki.seccat",
"vsd": "application/vnd.visio",
"vsdx": "application/vnd.visio2013",
"wm": "video/x-ms-wm",
"wma": "audio/x-ms-wma",
"wax": "audio/x-ms-wax",
"wmx": "video/x-ms-wmx",
"wmd": "application/x-ms-wmd",
"wpl": "application/vnd.ms-wpl",
"wmz": "application/x-ms-wmz",
"wmv": "video/x-ms-wmv",
"wvx": "video/x-ms-wvx",
"wmf": "application/x-msmetafile",
"trm": "application/x-msterminal",
"doc": "application/msword",
"docm": "application/vnd.ms-word.document.macroenabled.12",
"dotm": "application/vnd.ms-word.template.macroenabled.12",
"wri": "application/x-mswrite",
"wps": "application/vnd.ms-works",
"xbap": "application/x-ms-xbap",
"xps": "application/vnd.ms-xpsdocument",
"mid": "audio/midi",
"mpy": "application/vnd.ibm.minipay",
"afp": "application/vnd.ibm.modcap",
"rms": "application/vnd.jcp.javame.midlet-rms",
"tmo": "application/vnd.tmobile-livetv",
"prc": "application/x-mobipocket-ebook",
"mbk": "application/vnd.mobius.mbk",
"dis": "application/vnd.mobius.dis",
"plc": "application/vnd.mobius.plc",
"mqy": "application/vnd.mobius.mqy",
"msl": "application/vnd.mobius.msl",
"txf": "application/vnd.mobius.txf",
"daf": "application/vnd.mobius.daf",
"fly": "text/vnd.fly",
"mpc": "application/vnd.mophun.certificate",
"mpn": "application/vnd.mophun.application",
"mj2": "video/mj2",
"mpga": "audio/mpeg",
"mxu": "video/vnd.mpegurl",
"mpeg": "video/mpeg",
"m21": "application/mp21",
"mp4a": "audio/mp4",
"mp4": "video/mp4",
"m3u8": "application/vnd.apple.mpegurl",
"mus": "application/vnd.musician",
"msty": "application/vnd.muvee.style",
"mxml": "application/xv+xml",
"ngdat": "application/vnd.nokia.n-gage.data",
"n-gage": "application/vnd.nokia.n-gage.symbian.install",
"ncx": "application/x-dtbncx+xml",
"nc": "application/x-netcdf",
"nlu": "application/vnd.neurolanguage.nlu",
"dna": "application/vnd.dna",
"nnd": "application/vnd.noblenet-directory",
"nns": "application/vnd.noblenet-sealer",
"nnw": "application/vnd.noblenet-web",
"rpst": "application/vnd.nokia.radio-preset",
"rpss": "application/vnd.nokia.radio-presets",
"n3": "text/n3",
"edm": "application/vnd.novadigm.edm",
"edx": "application/vnd.novadigm.edx",
"ext": "application/vnd.novadigm.ext",
"gph": "application/vnd.flographit",
"ecelp4800": "audio/vnd.nuera.ecelp4800",
"ecelp7470": "audio/vnd.nuera.ecelp7470",
"ecelp9600": "audio/vnd.nuera.ecelp9600",
"oda": "application/oda",
"ogx": "application/ogg",
"oga": "audio/ogg",
"ogv": "video/ogg",
"dd2": "application/vnd.oma.dd2+xml",
"oth": "application/vnd.oasis.opendocument.text-web",
"opf": "application/oebps-package+xml",
"qbo": "application/vnd.intu.qbo",
"oxt": "application/vnd.openofficeorg.extension",
"osf": "application/vnd.yamaha.openscoreformat",
"weba": "audio/webm",
"webm": "video/webm",
"odc": "application/vnd.oasis.opendocument.chart",
"otc": "application/vnd.oasis.opendocument.chart-template",
"odb": "application/vnd.oasis.opendocument.database",
"odf": "application/vnd.oasis.opendocument.formula",
"odft": "application/vnd.oasis.opendocument.formula-template",
"odg": "application/vnd.oasis.opendocument.graphics",
"otg": "application/vnd.oasis.opendocument.graphics-template",
"odi": "application/vnd.oasis.opendocument.image",
"oti": "application/vnd.oasis.opendocument.image-template",
"odp": "application/vnd.oasis.opendocument.presentation",
"otp": "application/vnd.oasis.opendocument.presentation-template",
"ods": "application/vnd.oasis.opendocument.spreadsheet",
"ots": "application/vnd.oasis.opendocument.spreadsheet-template",
"odt": "application/vnd.oasis.opendocument.text",
"odm": "application/vnd.oasis.opendocument.text-master",
"ott": "application/vnd.oasis.opendocument.text-template",
"ktx": "image/ktx",
"sxc": "application/vnd.sun.xml.calc",
"stc": "application/vnd.sun.xml.calc.template",
"sxd": "application/vnd.sun.xml.draw",
"std": "application/vnd.sun.xml.draw.template",
"sxi": "application/vnd.sun.xml.impress",
"sti": "application/vnd.sun.xml.impress.template",
"sxm": "application/vnd.sun.xml.math",
"sxw": "application/vnd.sun.xml.writer",
"sxg": "application/vnd.sun.xml.writer.global",
"stw": "application/vnd.sun.xml.writer.template",
"otf": "application/x-font-otf",
"osfpvg": "application/vnd.yamaha.openscoreformat.osfpvg+xml",
"dp": "application/vnd.osgi.dp",
"pdb": "application/vnd.palm",
"p": "text/x-pascal",
"paw": "application/vnd.pawaafile",
"pclxl": "application/vnd.hp-pclxl",
"efif": "application/vnd.picsel",
"pcx": "image/x-pcx",
"psd": "image/vnd.adobe.photoshop",
"prf": "application/pics-rules",
"pic": "image/x-pict",
"chat": "application/x-chat",
"p10": "application/pkcs10",
"p12": "application/x-pkcs12",
"p7m": "application/pkcs7-mime",
"p7s": "application/pkcs7-signature",
"p7r": "application/x-pkcs7-certreqresp",
"p7b": "application/x-pkcs7-certificates",
"p8": "application/pkcs8",
"plf": "application/vnd.pocketlearn",
"pnm": "image/x-portable-anymap",
"pbm": "image/x-portable-bitmap",
"pcf": "application/x-font-pcf",
"pfr": "application/font-tdpfr",
"pgn": "application/x-chess-pgn",
"pgm": "image/x-portable-graymap",
"png": "image/x-png",
"ppm": "image/x-portable-pixmap",
"pskcxml": "application/pskc+xml",
"pml": "application/vnd.ctc-posml",
"ai": "application/postscript",
"pfa": "application/x-font-type1",
"pbd": "application/vnd.powerbuilder6",
"pgp": "application/pgp-signature",
"box": "application/vnd.previewsystems.box",
"ptid": "application/vnd.pvi.ptid1",
"pls": "application/pls+xml",
"str": "application/vnd.pg.format",
"ei6": "application/vnd.pg.osasli",
"dsc": "text/prs.lines.tag",
"psf": "application/x-font-linux-psf",
"qps": "application/vnd.publishare-delta-tree",
"wg": "application/vnd.pmi.widget",
"qxd": "application/vnd.quark.quarkxpress",
"esf": "application/vnd.epson.esf",
"msf": "application/vnd.epson.msf",
"ssf": "application/vnd.epson.ssf",
"qam": "application/vnd.epson.quickanime",
"qfx": "application/vnd.intu.qfx",
"qt": "video/quicktime",
"rar": "application/x-rar-compressed",
"ram": "audio/x-pn-realaudio",
"rmp": "audio/x-pn-realaudio-plugin",
"rsd": "application/rsd+xml",
"rm": "application/vnd.rn-realmedia",
"bed": "application/vnd.realvnc.bed",
"mxl": "application/vnd.recordare.musicxml",
"musicxml": "application/vnd.recordare.musicxml+xml",
"rnc": "application/relax-ng-compact-syntax",
"rdz": "application/vnd.data-vision.rdz",
"rdf": "application/rdf+xml",
"rp9": "application/vnd.cloanto.rp9",
"jisp": "application/vnd.jisp",
"rtf": "application/rtf",
"rtx": "text/richtext",
"link66": "application/vnd.route66.link66+xml",
"rss": "application/rss+xml",
"shf": "application/shf+xml",
"st": "application/vnd.sailingtracker.track",
"svg": "image/svg+xml",
"sus": "application/vnd.sus-calendar",
"sru": "application/sru+xml",
"setpay": "application/set-payment-initiation",
"setreg": "application/set-registration-initiation",
"sema": "application/vnd.sema",
"semd": "application/vnd.semd",
"semf": "application/vnd.semf",
"see": "application/vnd.seemail",
"snf": "application/x-font-snf",
"spq": "application/scvp-vp-request",
"spp": "application/scvp-vp-response",
"scq": "application/scvp-cv-request",
"scs": "application/scvp-cv-response",
"sdp": "application/sdp",
"etx": "text/x-setext",
"movie": "video/x-sgi-movie",
"ifm": "application/vnd.shana.informed.formdata",
"itp": "application/vnd.shana.informed.formtemplate",
"iif": "application/vnd.shana.informed.interchange",
"ipk": "application/vnd.shana.informed.package",
"tfi": "application/thraud+xml",
"shar": "application/x-shar",
"rgb": "image/x-rgb",
"slt": "application/vnd.epson.salt",
"aso": "application/vnd.accpac.simply.aso",
"imp": "application/vnd.accpac.simply.imp",
"twd": "application/vnd.simtech-mindmapper",
"csp": "application/vnd.commonspace",
"saf": "application/vnd.yamaha.smaf-audio",
"mmf": "application/vnd.smaf",
"spf": "application/vnd.yamaha.smaf-phrase",
"teacher": "application/vnd.smart.teacher",
"svd": "application/vnd.svd",
"rq": "application/sparql-query",
"srx": "application/sparql-results+xml",
"gram": "application/srgs",
"grxml": "application/srgs+xml",
"ssml": "application/ssml+xml",
"skp": "application/vnd.koan",
"sgml": "text/sgml",
"sdc": "application/vnd.stardivision.calc",
"sda": "application/vnd.stardivision.draw",
"sdd": "application/vnd.stardivision.impress",
"smf": "application/vnd.stardivision.math",
"sdw": "application/vnd.stardivision.writer",
"sgl": "application/vnd.stardivision.writer-global",
"sm": "application/vnd.stepmania.stepchart",
"sit": "application/x-stuffit",
"sitx": "application/x-stuffitx",
"sdkm": "application/vnd.solent.sdkm+xml",
"xo": "application/vnd.olpc-sugar",
"au": "audio/basic",
"wqd": "application/vnd.wqd",
"sis": "application/vnd.symbian.install",
"smi": "application/smil+xml",
"xsm": "application/vnd.syncml+xml",
"bdm": "application/vnd.syncml.dm+wbxml",
"xdm": "application/vnd.syncml.dm+xml",
"sv4cpio": "application/x-sv4cpio",
"sv4crc": "application/x-sv4crc",
"sbml": "application/sbml+xml",
"tsv": "text/tab-separated-values",
"tiff": "image/tiff",
"tao": "application/vnd.tao.intent-module-archive",
"tar": "application/x-tar",
"tcl": "application/x-tcl",
"tex": "application/x-tex",
"tfm": "application/x-tex-tfm",
"tei": "application/tei+xml",
"txt": "text/plain",
"dxp": "application/vnd.spotfire.dxp",
"sfs": "application/vnd.spotfire.sfs",
"tsd": "application/timestamped-data",
"tpt": "application/vnd.trid.tpt",
"mxs": "application/vnd.triscape.mxs",
"t": "text/troff",
"tra": "application/vnd.trueapp",
"ttf": "application/x-font-ttf",
"ttl": "text/turtle",
"umj": "application/vnd.umajin",
"uoml": "application/vnd.uoml+xml",
"unityweb": "application/vnd.unity",
"ufd": "application/vnd.ufdl",
"uri": "text/uri-list",
"utz": "application/vnd.uiq.theme",
"ustar": "application/x-ustar",
"uu": "text/x-uuencode",
"vcs": "text/x-vcalendar",
"vcf": "text/x-vcard",
"vcd": "application/x-cdlink",
"vsf": "application/vnd.vsf",
"wrl": "model/vrml",
"vcx": "application/vnd.vcx",
"mts": "model/vnd.mts",
"vtu": "model/vnd.vtu",
"vis": "application/vnd.visionary",
"viv": "video/vnd.vivo",
"ccxml": "application/ccxml+xml,",
"vxml": "application/voicexml+xml",
"src": "application/x-wais-source",
"wbxml": "application/vnd.wap.wbxml",
"wbmp": "image/vnd.wap.wbmp",
"wav": "audio/x-wav",
"davmount": "application/davmount+xml",
"woff": "application/x-font-woff",
"wspolicy": "application/wspolicy+xml",
"webp": "image/webp",
"wtb": "application/vnd.webturbo",
"wgt": "application/widget",
"hlp": "application/winhlp",
"wml": "text/vnd.wap.wml",
"wmls": "text/vnd.wap.wmlscript",
"wmlsc": "application/vnd.wap.wmlscriptc",
"wpd": "application/vnd.wordperfect",
"stf": "application/vnd.wt.stf",
"wsdl": "application/wsdl+xml",
"xbm": "image/x-xbitmap",
"xpm": "image/x-xpixmap",
"xwd": "image/x-xwindowdump",
"der": "application/x-x509-ca-cert",
"fig": "application/x-xfig",
"xhtml": "application/xhtml+xml",
"xml": "application/xml",
"xdf": "application/xcap-diff+xml",
"xenc": "application/xenc+xml",
"xer": "application/patch-ops-error+xml",
"rl": "application/resource-lists+xml",
"rs": "application/rls-services+xml",
"rld": "application/resource-lists-diff+xml",
"xslt": "application/xslt+xml",
"xop": "application/xop+xml",
"xpi": "application/x-xpinstall",
"xspf": "application/xspf+xml",
"xul": "application/vnd.mozilla.xul+xml",
"xyz": "chemical/x-xyz",
"yaml": "text/yaml",
"yang": "application/yang",
"yin": "application/yin+xml",
"zir": "application/vnd.zul",
"zip": "application/zip",
"zmm": "application/vnd.handheld-entertainment+xml",
"zaz": "application/vnd.zzazz.deck+xml"
}
Edit:
According to @Octo Poulos suggestions:
- Separated jpeg and jpg MIME into two different keys
- updated the MIME of mp4 format to
video/mp4
MIME-тип — тип данных, которые могут быть переданы посредством сети интернет с применением стандарта MIME.
Согласно RFC 2045, RFC 2046, RFC 4288, RFC 4289 и RFC 4855 выделяются следующие базовые типы передаваемых данных:
- application
- audio
- example
- image
- message
- model
- multipart
- text
- video
application¶
Внутренний формат прикладной программы
- application/atom+xml: Atom
- application/EDI-X12: EDI X12 (RFC 1767)
- application/EDIFACT: EDI EDIFACT (RFC 1767)
- application/json: JavaScript Object Notation JSON (RFC 4627)
- application/javascript: JavaScript (RFC 4329)
- application/octet-stream: двоичный файл без указания формата (RFC 2046)
- application/ogg: Ogg (RFC 5334)
- application/pdf: Portable Document Format, PDF (RFC 3778)
- application/postscript: PostScript (RFC 2046)
- application/soap+xml: SOAP (RFC 3902)
- application/font-woff: Web Open Font Format
- application/xhtml+xml: XHTML (RFC 3236)
- application/xml-dtd: DTD (RFC 3023)
- application/xop+xml:XOP
- application/zip: ZIP
- application/gzip: Gzip
- application/x-bittorrent : BitTorrent
- application/x-tex : TeX
- application/xml: XML
audio¶
Аудио
- audio/basic: mulaw аудио, 8 кГц, 1 канал (RFC 2046)
- audio/L24: 24bit Linear PCM аудио, 8-48 кГц, 1-N каналов (RFC 3190)
- audio/mp4: MP4
- audio/aac: AAC
- audio/mpeg: MP3 или др. MPEG (RFC 3003)
- audio/ogg: Ogg Vorbis, Speex, Flac или др. аудио (RFC 5334)
- audio/vorbis: Vorbis (RFC 5215)
- audio/x-ms-wma: Windows Media Audio
- audio/x-ms-wax: Windows Media Audio перенаправление
- audio/vnd.rn-realaudio: RealAudio
- audio/vnd.wave: WAV(RFC 2361)
- audio/webm: WebM
image¶
Изображение
- image/gif: GIF(RFC 2045 и RFC 2046)
- image/jpeg: JPEG (RFC 2045 и RFC 2046)
- image/pjpeg: JPEG
- image/png: Portable Network Graphics(RFC 2083)
- image/svg+xml: SVG
- image/tiff: TIFF(RFC 3302)
- image/vnd.microsoft.icon: ICO
- image/vnd.wap.wbmp: WBMP
- image/webp: WebP
message¶
Сообщение
- message/http (RFC 2616)
- message/imdn+xml: IMDN (RFC 5438)
- message/partial: E-mail (RFC 2045 и RFC 2046)
- message/rfc822: E-mail; EML-файлы, MIME-файлы, MHT-файлы, MHTML-файлы (RFC 2045 и RFC 2046)
model¶
Для 3D моделей
- model/example: (RFC 4735)
- model/iges: IGS файлы, IGES файлы (RFC 2077)
- model/mesh: MSH файлы, MESH файлы (RFC 2077), SILO файлы
- model/vrml: WRL файлы, VRML файлы (RFC 2077)
- model/x3d+binary: X3D ISO стандарт для 3D компьютерной графики, X3DB файлы
- model/x3d+vrml: X3D ISO стандарт для 3D компьютерной графики, X3DV VRML файлы
- model/x3d+xml: X3D ISO стандарт для 3D компютерной графики, X3D XML файлы
- multipart[править | править вики-текст]
- multipart/mixed: MIME E-mail (RFC 2045 и RFC 2046)
- multipart/alternative: MIME E-mail (RFC 2045 и RFC 2046)
- multipart/related: MIME E-mail (RFC 2387 и используемое MHTML (HTML mail))
- multipart/form-data: MIME Webform (RFC 2388)
- multipart/signed: (RFC 1847)
- multipart/encrypted: (RFC 1847)
text¶
Текст
- text/cmd: команды
- text/css: Cascading Style Sheets (RFC 2318)
- text/csv: CSV (RFC 4180)
- text/html: HTML (RFC 2854)
- text/javascript (Obsolete): JavaScript (RFC 4329)
- text/plain: текстовые данные (RFC 2046 и RFC 3676)
- text/php: Скрипт языка PHP
- text/xml: Extensible Markup Language (RFC 3023)
- text/markdown: файл языка разметки Markdown (RFC 7763)
video¶
Видео
- video/mpeg: MPEG-1 (RFC 2045 и RFC 2046)
- video/mp4: MP4 (RFC 4337)
- video/ogg: Ogg Theora или другое видео (RFC 5334)
- video/quicktime: QuickTime
- video/webm: WebM
- video/x-ms-wmv: Windows Media Video
- video/x-flv: FLV
- video/3gpp: .3gpp .3gp
- video/3gpp2: .3gpp2 .3g2
vnd¶
Вендорные файлы
- application/vnd.oasis.opendocument.text: OpenDocument
- application/vnd.oasis.opendocument.spreadsheet: OpenDocument
- application/vnd.oasis.opendocument.presentation: OpenDocument
- application/vnd.oasis.opendocument.graphics: OpenDocument
- application/vnd.ms-excel: Microsoft Excel файлы
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: Microsoft Excel 2007 файлы
- application/vnd.ms-powerpoint: Microsoft Powerpoint файлы
- application/vnd.openxmlformats-officedocument.presentationml.presentation: Microsoft Powerpoint 2007 файлы
- application/msword: Microsoft Word файлы
- application/vnd.openxmlformats-officedocument.wordprocessingml.document: Microsoft Word 2007 файлы
- application/vnd.mozilla.xul+xml: Mozilla XUL файлы
- application/vnd.google-earth.kml+xml: KML файлы (например, для Google Earth)
x¶
Нестандартные файлы
- application/x-www-form-urlencoded Form Encoded Data
- application/x-dvi: DVI
- application/x-latex: LaTeX файлы
- application/x-font-ttf: TrueType (не зарегистрированный MIME-тип, но наиболее часто используемый)
- application/x-shockwave-flash: Adobe Flash
- application/x-stuffit: StuffIt
- application/x-rar-compressed: RAR
- application/x-tar: Tarball
- text/x-jquery-tmpl: jQuery
- application/x-javascript:
x-pkcs¶
PKCS
- application/x-pkcs12: p12 файлы
- application/x-pkcs12: pfx файлы
- application/x-pkcs7-certificates: p7b файлы
- application/x-pkcs7-certificates: spc файлы
- application/x-pkcs7-certreqresp: p7r файлы
- application/x-pkcs7-mime: p7c файлы
- application/x-pkcs7-mime: p7m файлы
- application/x-pkcs7-signature: p7s файлы
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»> <html xmlns=«http://www.w3.org/1999/xhtml»> <head> <meta http—equiv=«Content-Type» content=«text/html; charset=iso-8859-1» /> <title>How to export HTML file to MS Word document (.doc) using php code</title> <style> h1 { height: 50px; width: 100%; font-size: 18px; background: #18aa8d; color: white; line-height: 150%; border-radius: 3px 3px 0 0; box-shadow: 0 2px 5px 1px rgba(0, 0, 0, 0.2); } form { box-sizing: border-box; width: 500px; margin: 100px auto 0; box-shadow: 2px 2px 5px 1px rgba(0, 0, 0, 0.2); padding-bottom: 40px; border-radius: 3px; } form h1 { box-sizing: border-box; padding: 20px; } .text-field { margin: 40px 25px; width: 80%; display: block; border: none; padding: 10px 0; -webkit-transition: all 0.3s cubic-bezier(0.64, 0.09, 0.08, 1); transition: all 0.3s cubic-bezier(0.64, 0.09, 0.08, 1); background: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 96%, #1abc9c 4%); background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 96%, #1abc9c 4%); background-position: -100% 0; background-size: 100% 100%; background-repeat: no-repeat; color: #0e6252; } .text-field:focus, .text-field:valid { box-shadow: none; outline: none; background-position: 0 0; border-bottom: solid 1px #1abc9c; } button { float:right; border: none; background: #1abc9c; cursor: pointer; border-radius: 3px; padding: 6px; width: 40px; color: white; margin-right: 40px; box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.2); } button:hover { -webkit-transform: translateY(-3px); -ms-transform: translateY(-3px); transform: translateY(-3px); box-shadow: 0 6px 6px 0 rgba(0, 0, 0, 0.2); } .text-field-1 { background:none; } </style> </head> <body> <form method=«POST» action=«<strong>export-to-word.php</strong>»> <h1>Form</h1> <input placeholder=«Heading» name=«heading» class=«text-field» type=«text» required=«»> <textarea rows=«3» cols=«6» name=«content» placeholder=«content» class=«text-field text-field-1»></textarea> <button type=«submit» name=«exportToWord»>Export Doc</button> </form> </body> </html> |
Я могу успешно загрузить свое Microsoft Word, если я назвал его по имени файла по умолчанию. Но если я использую $variables, чтобы назвать его. Расширение документа неизвестно.
Пример:
$No = 1;
$Name = 'John';
$Test = 'Science';
//Download header
$document->save($doc);
header('Content-Description: File Transfer');
header('Content-Type: application/msword');
header("Content-Disposition: attachment; filename='$No_$Name_$Test.docx");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($doc));
ob_clean();
flush();
readfile($doc);
Итак, если я переименую свое имя файла как переменные. Загрузка файла будет без расширения docx. Кто-нибудь может посоветовать?
Спасибо
14 июль 2012, в 23:33
Поделиться
Источник
3 ответа
Измените это
header('Content-Type: application/msword');
to
header('Content-Type: application/octet-stream');
EDIT:
И измените
header("Content-Disposition: attachment; filename='$No_$Name_$Test.docx");
к
header("Content-Disposition: attachment; filename="{$No}_{$Name}_{$Test}.docx"");
P M
14 июль 2012, в 22:25
Поделиться
Правильные заголовки
для Excel (*.xlsx):
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $fileName . '"');
для Word (*.docx):
header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Disposition: attachment;filename="' . $fileName . '"');
Konstantin Smolyanin
29 март 2013, в 13:53
Поделиться
Правильное использование этого заголовка:
Content-Disposition: attachment; filename="fname.ext"
обратите внимание, что если имя содержит пробелы, оно должно быть указано
См. RFC6266 раздел 5. Примеры
David Valdivieso
17 март 2016, в 03:34
Поделиться
Ещё вопросы
- 0Как вы можете передать массив строк в функцию как константу в C ++?
- 1Как перенаправить на страницу ошибки по умолчанию после реализации ELMAH?
- 0Выбранный мультиселекторный виджет очищается при отправке формы в MVC 4
- 1Удалить записи списка, содержащие несколько условий
- 0jQuery originalevent offsetx свойство?
- 1Ошибка сельдерея при выполнении запланированного задания
- 1Объединить свойства объекта без перезаписи
- 1Невозможно войти с помощью паспорта — Nodejs
- 1я не понимаю, что такое «защищенная пустота Page_Load»
- 0Показать строку перечисления в Angularjs
- 1Как я могу справиться с проблемой поворота с Preview & FaceDetection
- 1Анализ сложности алгоритма
- 0Радио-кнопка проверки
- 1О событии «Загрузка»
- 1Как нарисовать этот график D3?
- 0Чтение части двоичного файла в ранее существующий объект basic_string
- 1Правильный способ получить выход промежуточного слоя в модели Keras?
- 0Как сложить количество из таблицы CodeIgniter и MySql
- 0Вручную загрузите угловое приложение для создания инициализации асинхронного приложения
- 0Angular JS, добавляющий сервис к контроллеру, не работает
- 0Получить название категории или ссылку от Magento CMS
- 0Утечка памяти в OpenCV Set Size
- 0Неустранимая ошибка: невозможно повторно объявить __autoload ()
- 1Запутывание строк ресурсов, которые могут выдавать слишком много информации о логике программирования
- 1Ошибка при настройке LookAndFeel
- 1Как преобразовать строку в EObject?
- 0Как правильно обращаться к функции внутри другого контроллера?
- 0Как включить / отключить все элементы управления в строке списка. при нажатии флажок внутри списка
- 0Как я могу получить проверку «одно из» Nod для работы с флажками?
- 0Надежность пароля JQuery
- 0Как создать боковую панель с фиксированной позицией для моего проекта WordPress
- 1Получение% userprofile% из реестра с использованием .NET 3.5
- 1Обычная «галочка» в многопользовательских онлайн играх как?
- 1Почему связыватель модели смешивает поля идентификаторов?
- 0Добавить данные в угловую форму в контроллере
- 0Минимальная сумма разности k попарных элементов
- 0аллегро 5 нет событий работа
- 1Почему мой метод рисования вызывается только через раз?
- 0MySQL Query с несколькими условиями, но ограниченными результатами
- 1Переполнение в OpenGL ES Texture Mapping
- 0Путаница между дизайном стола PK и FK
- 0asp.net element.style проблема со свойством высоты
- 1Общая библиотека не найдена ошибка на Android LogCat
- 0Как запустить конфигурационный файл транспортира из консоли браузера
- 1Цикл Python для создания словаря
- 1как получить хэш-таблицу Arraylist с другими намерениями?
- 1Windows Phone 8.1 запускает файлы и возвращает
- 0Откройте MySQL из терминала
- 0Оповещение ID из поста jquery
- 1Выделите всю длину строки в виджете Tkinter Text
Литература
- Многоцелевое расширение почты Интернет (MIME) Семенов Ю.А. (ГНЦ ИТЭФ)
- MEDIA (MIME) типы и подтипы. Содержание поля Content-Type в HTTP и SMTP протоколах.
- Расширение возможностей Internet-почты
- Описание некоторых MIME
- Не полный перевод почтового стандарта MIME (RFC1521)
- Лабиринт Internet. Павел Храмцов, Электронинформ, 1996
- Администрирование сети и сервисов InterNet. Учебное пособие, П.Б. Храмцов, 1997.
7.1 Что такое MIME?
MIME означает «Multipurpose Internet Mail Extensions» (Многоцелевые расширения почтового стандарта Internet). Этот стандарт описывает, как пересылать по электронной почте исполняемые, графические, мультимедийные, смешанные данные. Типичные применения MIME — пересылка графических изображений, аудио, документов Word, программ и даже просто текстовых файлов, то есть, когда важно, чтобы входе пересылки не производилось никаких преобразований над данными. MIME также позволяет размечать письмо на части различных типов так, чтобы получатель (почтовая программа) мог определить, что делать с каждой из частей письма.
Хотя формат первоначально создан для электронной почты, он также используется для службы WWW.
7.2 Для чего это нужно?
Так как файлы могут быть разными (.gif, .doc, .pdf …), браузер должен понимать, что с ними делать. Эту проблему решает стандарт «MIME — типы». Он сообщает клиенту, какой тип файлов получен, например:
Content-type: image/gif (графика GIF)
Content-type: image/jpeg (графика JPG)
7.3 Как это работает?
Браузеры используют MIME-типы в своих HTTP-заголовках Accept для того, чтобы сообщить, в каких форматах они предпочитают принимать данные (если сервер может выдать файл в разных форматах). Серверы используют MIME-типы в HTTP-заголовках Content-Type, чтобы сообщить клиенту о том, в каком формате передается прилагаемое содержимое: то ли это HTML, который нужно форматировать, то ли это GIF или JPEG, требующий визуализации, то ли это данные в формате PDF, для которого нужно открывать внешнюю программу просмотра или использовать дополнительное приложение.
Формат MIME-типа — тип/подтип. Можно использовать символ *; например, следующий заголовок клиента означает, что принимаются документы во всех форматах:
Accept: */*
Следующий заголовок клиента означает, что принимаются все типы формата text независимо от подтипа:
Accept: text/*
Серверы должны проверять данные о принимаемых типах, содержащиеся в заголовке Accept, и по возможности выдавать данные соответствующего типа. Большинство серверов определяют формат документа по расширению имени файла. Например, файлы с расширениями .htm и .html — это файлы в формате HTML, поэтому сервер посылает такой документ с типом text/html в заголовке Content-Type, пример:
Content-Type: text/html
Действия клиента при получении файла:
-
При получении клиентом файла, анализируется HTTP заголовок, если в нем находится Content-Type, то клиент производит действие с файлом, учитывая эту информацию.
-
Если записи нет, то клиент использует свой список MIME-типов, в котором тип определяется по расширению имени файла.
-
Если тип в файле не найден, то клиент не знает что делать с этим файлом. Браузер в таком случае предлагает вам выбрать сами программу, которой надо передать файл.
7.4 Некоторые основные типы и подтипы MIME.
Первый стандарт — RFC1341 MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies N. Borenstein, N. Freed June 1992
Последняя версия (состоит из четырех частей) :
-
RFC2049 (Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples N. Freed, N. Borenstein November 1996)
-
RFC2048 (Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures N. Freed, J. Klensin, J. Postel November 1996)
-
RFC2047 (MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text K. Moore November 1996)
-
RFC2046 (Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types N. Freed, N. Borenstein November 1996)
-
RFC2045 (Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies N. Freed, N. Borenstein November 1996)
Text – текстовые типы.
Тип ‘text’ предназначен для пересылки текстовых материалов. Для обозначения языковой кодировки текста используется параметр «charset» для некоторых подтипов, включая подтип, «text/html», соответствующий простому (неформатированному) тексту.
Пример:
Content-Type: text/html; charset=windows-1251
Основные подтипы:
Content-Type: text/html — html текст.
Content-Type: text/plain — простой текст.
Content-Type: text/x-server-parsed-html — файл созданный с помощью SSI
Content-Type: text/css — файл содержащий стили — css
Multipart — данные состоят из несколько частей разных типов.
Основные подтипы:
Content-Type: multipart/mixed — несколько частей разных типов (используется в e-mail)
Content-Type: multipart/alternative — одна из частей (используется в e-mail)
Content-Type: multipart/x-mixed-replace — после загрузки следующая часть заменяет предыдущею (используется в анимации)
Message — инкапсулированное почтовое сообщение (используется в e-mail)
Image — графические типы.
Основные подтипы:
Content-Type: image/gif — изображение gif.
Content-Type: image/jpeg — изображение jpeg.
Content-Type: image/tiff — изображение tiff.
Content-Type: image/bmp — изображение bmp
Audio — звуковые типы.
Основные подтипы:
Content-Type: audio/wav — звук в формате wav.
Content-Type: audio/midi — звук в формате midi
Content-Type: audio/mpeg — звук в формате mp3.
Content-Type: audio/vqf — звук в формате vqf
Content-Type: audio/x-pn-realaudio — звук в формате ram rm
Content-Type: audio/x-realaudio — звук в формате ra
Content-Type: audio/x-wav — звук в формате wav
Video – видео типы.
Основные подтипы:
Content-Type: video/avi — видео в формате avi.
Content-Type: video/mpeg — видео в формате mpeg.
Application — представляет данные какого-нибудь приложения.
application/msword – приняв такое сообщение, браузер запустит MS Word для открытия этих данных. Если в системе нет MS Word, то браузер попросит сохранить данные в файле имя файла может находиться в параметре name. Например:
Content-Type: application/msword; name=”Mydoc.doc”
Основные подтипы:
Content-Type: application/msword — программа MS Word
Content-Type: application/pdf — программа Acrobat Reader
Content-Type: application/rtf — программа MS Word
Content-Type: application/zip — разархиватор ZIP-архивов
7.5 Серверные приложения.
Приложения на сервер можно использовать для создания счетчиков, форумов, чатов, обработки статистики, организации доступа к базам данных и т.д.
Для этого нужно чтобы клиенты могли запускать или работать с приложениями на сервере.
7.5.1 Методы использования серверных приложений.
-
Запуск через CGI-шлюз. Эти приложения могут быть написаны на любых языках.
Преимущества:
— используются обычные программы (в случае Windows .bat, .exe и тд.)
— стандартизовано
Недостатки:
— при каждом вызове программы происходит ее запуск, что не есть быстро, и при большом количестве запросов, появляется много запущенных программ. -
Приложения, встроенные в сервер HTTP, как модули. Как правило, написанные на С.
Преимущества:
— быстрота (т.к. всегда работает, не нужен запуск).
Недостатки:
— необходимость писать модуль для конкретного сервера HTTP. -
Приложения, работающие через модули-шлюзы встроенные в сервер HTTP.
Преимущества:
— шлюз написан для конкретного приложения (например, для СУБД MySQL)
Недостатки:
— необходимость писать модул-шлюз для конкретного приложения. -
Приложения, написанные на скриптовых языках (SSI, PERL, PHP, ASP и др.), для выполнения которых должны быть встроенные интерпретаторы, как модули сервера HTTP. Код этих приложений встраивается непосредственно в HTML страницы. Сервер распознает эти страницы по расширению (.php, .asp, .shtml, .pl).
Преимущества:
— быстрота (выше чем у CGI, но ниже чем у модуля, т.к. интерпретаторы).
— удобно использовать
Недостатки:
— ограниченность возможностей -
Приложения, работающие через Java Servlet.
Преимущества:
— платформо-независимость
— серверо-независимость
Недостатки:
— приложения на Java работаю медленнее -
Приложения, написанные на Java и встроенные в HTML страницы (с расширением .JSP (JavaServer Pages)). В принципе это аналог скриптовых языков работающих через модуль (в место модуля в данном случае Java Servlet, а язык Java)
Преимущества:
— платформо-независимость
— серверо-независимость
— удобно использовать
Недостатки:
— приложения на Java работаю медленнее
7.5.2 Архитектура WWW сервера с учетом серверных приложений
Архитектура современного WWW сервера. На выходе с сервера всегда HTML, но сгенерированный приложением.
7.5.3 Примеры запросов к приложениям
CGI
http://ipm.kstu.ru/cgi/search.cgi?text=сотрудники
В результате через CGI шлюз
-
Будет запущено приложение search.cgi
-
и будет передан запрос «text=сотрудники» приложению search.cgi
-
Приложение search.cgi вернет результат работы CGI-шлюзу
PHP
http://ipm.kstu.ru/cgi/search.php?text=сотрудники
В результате
-
Будет передан запрос «text=сотрудники» интерпретатору PHP.
-
Интерпретатор будет выполнять команды search.php.
-
Интерпретатор вернет результат работы WWW-серверу.
7.6 CGI-шлюз
Common Gateway Interface — стандарт для обмена данными между сервером и прикладной программой, которая запускается из-под сервера.
7.6.1 Механизмы обмена данными
Механизм можно разделить на четыре части:
-
переменные окружения
-
командную строку
-
стандартный ввод
-
стандартный вывод.
7.6.1.1 Переменные окружения
При запуске внешней программы сервер создает специфические переменные окружения, через которые передает приложению, как служебную информацию, так и данные.
-
SERVER_NAME — определяет доменное имя сервера.
-
GATEWAY_INTERFACE — определяет версию протокола CGI.
-
SERVER_PROTOCOL — протокол сервера.
-
SERVER_SOFTWARE — версия сервера.
-
SERVER_PORT — определяет порт, по которому осуществляется взаимодействие.
-
REQUEST_METHOD — определяет метод, значения GET, POST, HEAD и т. п.
-
PATH_INFO — передает программе путь с переменными, часть URL переданный клиентом (т.е. относительный путь с переменными).
-
PATH_TRANSLATED — абсолютный путь, путь расположения программы на диске сервера.
Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
PATH_INFO = «/cgi-bin/search?text=ipm»
PATH_TRANSLATED = «/usr/local/etc/httpd/cgi-bin/search». -
SCRIPT_NAME — относительный путь без переменных.
Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
PATH_INFO = «/cgi-bin/search?text=ipm»
SCRIPT_NAME = «/cgi-bin/search» -
QUERY_STRING — переменная определяет содержание запроса к скрипту (все что после ?).
Пример для запроса http://ipm.kstu.ru/cgi-bin/search?text=ipm:
QUERY_STRING ——-> «text=ipm»
Идентификация пользователя и его машины:
-
REMOTE_HOST — доменный адрес машины клиента.
-
REMOTE_ADDR — IP-адрес машины клиента.
-
AUTH_TYPE — тип идентификации пользователя.
-
REMOTE_USER — используется для идентификации пользователя.
-
REMOTE_IDENT — данная переменная порождается сервером, если он поддерживает идентификацию пользователя по протоколу RFC-931. Рекомендовано использование этой переменной для первоначального использования скрипта.
Тип и длина передаваемой информации от клиента к серверу.
-
CONTENT_TYPE — определяет MIME-тип данных.
-
CONTENT_LENGTH — определяет размер данных в байтах.
Переменные заголовка HTTP.
-
HTTP_ACCEPT — поле ACCEPT.
-
HTTP_USER_AGENT — поле USER-AGENT.
-
HTTP_HOST — поле HOST.
-
и т.д.
7.6.1.2 Командная строка
Командная строка используется только при запросах типа ISIN-DEX.
Существует тэг
<ISINDEX prompt=»Введите Ваш текст для поиска:»>
вместо тэга <FORM> .
Запрос выделяется из URL и преобразуется в параметры командной строки.
Если в запросе нет знака «=», то запрос не ISIN-DE.
Параметры, выделенные из запроса, помещаются в массив параметров командной строки argv.
Знаком разделения параметров является символ «+».
Пример:
запрос http://ipm.kstu.ru/cgi-bin/search?text+ipm+kstu является ISIN-DEX
командная строка будет выглядеть так search text+ipm+kstu
7.6.1.3 Стандартный ввод
Используется при передаче данных по методу POST. Объем передаваемых данных задается переменной окружения CONTENT_LENGTH, а тип данных — переменной CONTENT_TYPE.
7.6.1.4 Стандартный вывод
Используется для возврата данных серверу. При этом вывод состоит из заголовка и данных. Заголовок сообщения должен отделяться от тела сообщения пустой строкой. Обычно в ответах указывают только три поля HTTP-заголовка:
-
Content-type — тип MIME (Content-type: text/html)
-
Location — редирект на другой ресурс (Location: http://ipm.kstu.ru/index.php)
-
Status — код возврата (ошибки) (Status: 200 OK)
Пример вывода:
Content-type: text/html
<HTML>
<HEAD>
<TITLE>Тестовая страница</TITLE>
</HEAD>
<BODY>
Работает!!!
</BODY>
</HTML>
7.7 Серверные интерпретаторы
CGI технология самая старая, и в современное время лучше ее не использовать.
На смену ей пришли серверные интерпретаторы, такие как:
-
SSI — один из самых первых, и самый простой
-
PHP — достаточно развитый язык для написания скриптов
-
ASP — аналог от Microsoft
Код программ вставляется непосредственно в запрашиваемые страницы, по расширению (.php, .asp, .shtml, .pl) сервер понимает, что страницу надо передать соответствующему модулю-интерпретатору. Модуль-интерпретатор выполняет все команды, и результаты передает серверу. Сервер передает их клиенту.
7.8 Базы данных и виды доступа
7.8.1 Доступ к базам данных на стороне сервера
7.8.1.1 Доступ к базам данных с помощью CGI
Что бы обеспечить доступ, нужно создать программу, которая будет работать между сервером WWW и базой данных.
Или при использовании ODBC, между сервером WWW и ODBC.
Схемы доступа к базам данных через CGI
7.8.1.1 Доступ к базам данных с помощью модулей шлюзов
Чаще всего используются интерпретаторами.
Есть, например, модули php-mysql, perl-mysql.
Схемы доступа к базам данных с помощью модулей шлюзов
7.8.2 Доступ к базам данных на стороне клиента
Можно передать базу данных клиенту, а работать клиент будет на своей машине с помощью переданного приложения, написанного на JAVA.
Схемы доступа к базам данных на стороне клиента
Преимущества:
-
Не загружается сервер (обработка данных происходит на стороне клиента)
-
Не загружается канал (если только база данных не очень большая)
-
Можно работать с базой без подключения
Недостатки:
-
Все данные оказываются у клиента (проблема защиты от копирования)
-
Клиентская машина может оказаться слишком слабой для обработки данных
-
Нельзя передавать большие базы данных
-
Владельцы серверов заинтересованы в большой посещаемости, что уменьшится.