Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/rel

来源:互联网 发布:破解 经淘宝排查认定 编辑:程序博客网 时间:2024/05/19 17:55

关于 Content-Type

Content-Type是HTTP协议header中一个重要的参数,它用于标识发送或接收到的数据的类型,浏览器根据该参数来决定数据的打开方式。在最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型,它使得HTTP传输的不再是普通的文本,让网页内容变得丰富多彩。

Content-Type使用的是 “主类型/子类型; 额外参数” (  [type]/[subtype]; parameter)的数值格式。

“主类型” (type)主要有以下几种:

1. text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的; 默认是text/plain;

2. multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据; 默认是multipart/mixed;

3. application:用于传输应用程序数据或者二进制数据; 默认是application/octet-stream;

4. message:用于包装一个E-mail消息;

5. image:用于传输静态图片数据;

6. audio:用于传输音频或者音声数据;

7. video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。

8. drawing:--未整理

9. java:--未整理

10 Model:--未整理

“子类型” (subtype)用于指定"主类型"的详细形式。 其中以x-开头表示该类别尚未标准化 。当客户端不能确定“子类型”时,会根据“主类型”来获取默认的子类型。

"额外参数" (parameter)用于指定请求/响应内容的字符编码格式。例如text/html;charset=utf-8;

MIME类型标准是通过Internet的IANA组织来制定的,但由于Internet发展的太快,很多应用程序等不及IANA来确认他们使用的MIME类型为标准类型,因此他们使用在类别中以x-开头的方法标识这个类别还没有成为标准,例如:x-gzip,x-tar等。事实上这些类型运用的很广泛,已经成为了事实标准。只要客户机和服务器共同承认这个MIME类型,即使它是不标准的类型也没有关系,客户程序就能根据MIME类型,采用具体的处理手段来处理数据。而Web服务器和浏览器(包括操作系统)中,缺省都设置了标准的和常见的MIME类型,只有对于不常见的 MIME类型,才需要同时设置服务器和客户浏览器,以进行识别。

以下整理了最新的MIME类型,保存成properties资源文件:

.*=application/octet-stream .tif=application/x-tif .001=application/x-001 .301=application/x-301 .323=text/h323 .906=application/x-906 .907=drawing/907 .a11=application/x-a11 .acp=audio/x-mei-aac .ai=application/postscript .aif=audio/aiff .aifc=audio/aiff .aiff=audio/aiff .anv=application/x-anv .asa=text/asa .asf=video/x-ms-asf .asp=text/asp .asx=video/x-ms-asf .au=audio/basic .avi=video/avi .awf=application/vnd.adobe.workflow .biz=text/xml .bmp=application/x-bmp .bot=application/x-bot .c4t=application/x-c4t .c90=application/x-c90 .cal=application/x-cals .cat=application/vnd.ms-pki.seccat .cdf=application/x-netcdf .cdr=application/x-cdr .cel=application/x-cel .cer=application/x-x509-ca-cert .cg4=application/x-g4 .cgm=application/x-cgm .cit=application/x-cit .class=java/* .cml=text/xml .cmp=application/x-cmp .cmx=application/x-cmx .cot=application/x-cot .crl=application/pkix-crl .crt=application/x-x509-ca-cert .csi=application/x-csi .css=text/css .cut=application/x-cut .dbf=application/x-dbf .dbm=application/x-dbm .dbx=application/x-dbx .dcd=text/xml .dcx=application/x-dcx .der=application/x-x509-ca-cert .dgn=application/x-dgn .dib=application/x-dib .dll=application/x-msdownload .doc=application/msword .dot=application/msword .drw=application/x-drw .dtd=text/xml .dwf=application/x-dwf .dwg=application/x-dwg .dxb=application/x-dxb .dxf=application/x-dxf .edn=application/vnd.adobe.edn .emf=application/x-emf .eml=message/rfc822 .ent=text/xml .epi=application/x-epi .eps=application/postscript .etd=application/x-ebx .exe=application/x-msdownload .fax=image/fax .fdf=application/vnd.fdf .fif=application/fractals .fo=text/xml .frm=application/x-frm .g4=application/x-g4 .gbr=application/x-gbr .gif=image/gif .gl2=application/x-gl2 .gp4=application/x-gp4 .hgl=application/x-hgl .hmr=application/x-hmr .hpg=application/x-hpgl .hpl=application/x-hpl .hqx=application/mac-binhex40 .hrf=application/x-hrf .hta=application/hta .htc=text/x-component .htm=text/html .html=text/html .htt=text/webviewhtml .htx=text/html .icb=application/x-icb .ico=application/x-ico .iff=application/x-iff .ig4=application/x-g4 .igs=application/x-igs .iii=application/x-iphone .img=application/x-img .ins=application/x-internet-signup .isp=application/x-internet-signup .IVF=video/x-ivf .java java/* .jfif=image/jpeg .jpe=application/x-jpe .jpeg=image/jpeg .jpg=application/x-jpg .js=application/x-javascript .jsp=text/html .la1=audio/x-liquid-file .lar=application/x-laplayer-reg .latex=application/x-latex .lavs=audio/x-liquid-secure .lbm=application/x-lbm .lmsff=audio/x-la-lms .ls=application/x-javascript .ltr=application/x-ltr .m1v=video/x-mpeg .m2v=video/x-mpeg .m3u=audio/mpegurl .m4e=video/mpeg4 .mac=application/x-mac .man=application/x-troff-man .math=text/xml .mdb=application/x-mdb .mfp=application/x-shockwave-flash .mht=message/rfc822 .mhtml=message/rfc822 .mi=application/x-mi .mid=audio/mid .midi=audio/mid .mil=application/x-mil .mml=text/xml .mnd=audio/x-musicnet-download .mns=audio/x-musicnet-stream .mocha=application/x-javascript .movie=video/x-sgi-movie .mp1=audio/mp1 .mp2=audio/mp2 .mp2v=video/mpeg .mp3=audio/mp3 .mp4=video/mpeg4 .mpa=video/x-mpg .mpd=application/vnd.ms-project .mpe=video/x-mpeg .mpeg=video/mpg .mpg=video/mpg .mpga=audio/rn-mpeg .mpp=application/vnd.ms-project .mps=video/x-mpeg .mpt=application/vnd.ms-project .mpv=video/mpg .mpv2=video/mpeg .mpw=application/vnd.ms-project .mpx=application/vnd.ms-project .mtx=text/xml .mxp=application/x-mmxp .net=image/pnetvue .nrf=application/x-nrf .nws=message/rfc822 .odc=text/x-ms-odc .out=application/x-out .p10=application/pkcs10 .p12=application/x-pkcs12 .p7b=application/x-pkcs7-certificates .p7c=application/pkcs7-mime .p7m=application/pkcs7-mime .p7r=application/x-pkcs7-certreqresp .p7s=application/pkcs7-signature .pc5=application/x-pc5 .pci=application/x-pci .pcl=application/x-pcl .pcx=application/x-pcx .pdf=application/pdf .pdx=application/vnd.adobe.pdx .pfx=application/x-pkcs12 .pgl=application/x-pgl .pic=application/x-pic .pko=application/vnd.ms-pki.pko .pl=application/x-perl .plg=text/html .pls=audio/scpls .plt=application/x-plt .png=application/x-png .pot=application/vnd.ms-powerpoint .ppa=application/vnd.ms-powerpoint .ppm=application/x-ppm .pps=application/vnd.ms-powerpoint .ppt=application/x-ppt .pr=application/x-pr .prf=application/pics-rules .prn=application/x-prn .prt=application/x-prt .ps=application/postscript .ptn=application/x-ptn .pwz=application/vnd.ms-powerpoint .r3t=text/vnd.rn-realtext3d .ra=audio/vnd.rn-realaudio .ram=audio/x-pn-realaudio .ras=application/x-ras .rat=application/rat-file .rdf=text/xml .rec=application/vnd.rn-recording .red=application/x-red .rgb=application/x-rgb .rjs=application/vnd.rn-realsystem-rjs .rjt=application/vnd.rn-realsystem-rjt .rlc=application/x-rlc .rle=application/x-rle .rm=application/vnd.rn-realmedia .rmf=application/vnd.adobe.rmf .rmi=audio/mid .rmj=application/vnd.rn-realsystem-rmj .rmm=audio/x-pn-realaudio .rmp=application/vnd.rn-rn_music_package .rms=application/vnd.rn-realmedia-secure .rmvb=application/vnd.rn-realmedia-vbr .rmx=application/vnd.rn-realsystem-rmx .rnx=application/vnd.rn-realplayer .rp=image/vnd.rn-realpix .rpm=audio/x-pn-realaudio-plugin .rsml=application/vnd.rn-rsml .rt=text/vnd.rn-realtext .rtf=application/x-rtf .rv=video/vnd.rn-realvideo .sam=application/x-sam .sat=application/x-sat .sdp=application/sdp .sdw=application/x-sdw .sit=application/x-stuffit .slb=application/x-slb .sld=application/x-sld .slk=drawing/x-slk .smi=application/smil .smil=application/smil .smk=application/x-smk .snd=audio/basic .sol=text/plain .sor=text/plain .spc=application/x-pkcs7-certificates .spl=application/futuresplash .spp=text/xml .ssm=application/streamingmedia .sst=application/vnd.ms-pki.certstore .stl=application/vnd.ms-pki.stl .stm=text/html .sty=application/x-sty .svg=text/xml .swf=application/x-shockwave-flash .tdf=application/x-tdf .tg4=application/x-tg4 .tga=application/x-tga .tiff=image/tiff .tld=text/xml .top=drawing/x-top .torrent=application/x-bittorrent .tsd=text/xml .txt=text/plain .uin=application/x-icq .uls=text/iuls .vcf=text/x-vcard .vda=application/x-vda .vdx=application/vnd.visio .vml=text/xml .vpg=application/x-vpeg005 .vsd=application/x-vsd .vss=application/vnd.visio .vst=application/x-vst .vsw=application/vnd.visio .vsx=application/vnd.visio .vtx=application/vnd.visio .vxml=text/xml .wav=audio/wav .wax=audio/x-ms-wax .wb1=application/x-wb1 .wb2=application/x-wb2 .wb3=application/x-wb3 .wbmp=image/vnd.wap.wbmp .wiz=application/msword .wk3=application/x-wk3 .wk4=application/x-wk4 .wkq=application/x-wkq .wks=application/x-wks .wm=video/x-ms-wm .wma=audio/x-ms-wma .wmd=application/x-ms-wmd .wmf=application/x-wmf .wml=text/vnd.wap.wml .wmv=video/x-ms-wmv .wmx=video/x-ms-wmx .wmz=application/x-ms-wmz .wp6=application/x-wp6 .wpd=application/x-wpd .wpg=application/x-wpg .wpl=application/vnd.ms-wpl .wq1=application/x-wq1 .wr1=application/x-wr1 .wri=application/x-wri .wrk=application/x-wrk .ws=application/x-ws .ws2=application/x-ws .wsc=text/scriptlet .wsdl=text/xml .wvx=video/x-ms-wvx .xdp=application/vnd.adobe.xdp .xdr=text/xml .xfd=application/vnd.adobe.xfd .xfdf=application/vnd.adobe.xfdf .xhtml=text/html .xls=application/x-xls .xlw=application/x-xlw .xml=text/xml .xpl=audio/scpls .xq=text/xml .xql=text/xml .xquery=text/xml .xsd=text/xml .xsl=text/xml .xslt=text/xml .xwd=application/x-xwd .x_b=application/x-x_b .sis=application/vnd.symbian.install .sisx=application/vnd.symbian.install .x_t=application/x-x_t .ipa=application/vnd.iphone .apk=application/vnd.android.package-archive .xap=application/x-silverlight-app

关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/rel

 

FORM元素的enctype属性指定了表单数据向服务器提交时所采用的编码类型

 

 

我 们知道在通过POST方式向服务器发送AJAX请求时最好要通过设置请求头来指定为application/x-www-form-urlencoded 编码类型。知道通过表单上传文件时必须指定编码类型为"multipart/form-data"。而text/plain是我们在做纯文本传输时防止接 收数据时出现编码混乱而设置的。为什么要这么设置?以下三者的区别。

 

 

application/x-www-form-urlencoded

这 是通过表单发送数据时默认的编码类型。我们没有在from标签中设置enctype属性时默认就是application/x-www-form- urlencoded类型的。application/x-www-form-urlencoded编码类型会把表单中发送的数据编码为“名称/值”对。 这是标准的编码格式。当表单的ACTION为POST的时候,浏览器把form数据封装到http body中,然后发送到服务器。当表单的ACTION 为GET的时候,application/x-www-form-urlencoded编码类型会把表单中发送的数据转换成一个字符串 (name=coderbolg&key=php),然后把这个字符串附加到URL后面,并用?分割,接着就请求这个新的URL。当我们通过 POST方式向服务器发送AJAX请求时最好要通过设置请求头来指定为application/x-www-form-urlencoded编码类型。方 法是在xmlobject.open()方法之后添加xmlobject.setRequestHeader("Content- Type","application/x-www-form-urlencoded") 不然服务器会接收不到POST过来的数据。

 

 

multipart/form-data

然 而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时“application/x-www-form-urlencoded”这种 编码方式效率很低。在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

 Browser 端<form>表单的ENCTYPE属性值为multipart/form-data,它告诉我们传输的数据要用到多媒体传输协议,由于多媒 体传输的都是大量的数据,所以规定上传文件必须是post方法,<input>的type属性必须是file。(表单里有图片上传用 ENCTYPE="multipart/form-data")。

<form name="userInfo" method="post" action="first_submit.jsp"    ENCTYPE="multipart/form-data">

表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码。如下:

<tr>

      <td height="30" align="right">上传企业营业执照图片:</td>

      <td><INPUT TYPE="FILE" NAME="uploadfile" SIZE="34"    onChange="checkimage()"></td>

</tr>

当 表单中有file类型控件并希望它正常工作的话,就必须设置成multipart/form-data类型,浏览器会把整个表单以控件为单位分割,并为每 个部分加上Content-Disposition(form-data或者file),Content-Type(默认为 text/plain),name(控件 name)等信息,并加上分割符(boundary)。

 

注:enctype="multipart/form-data"是上传二进制数据; form里面的input的值以2进制的方式传过去。

form里面的input的值以2进制的方式传过去,所以request就得不到值了。 也就是说加了这段代码,用request就会传递不成功,取表单值加入数据库时,用到下面的:

SmartUpload su new SmartUpload();//新建一个SmartUpload对象

su.getRequest().getParameterValues();取数组值

su.getRequest().getParameter( );取单个参数单个值

 

 

text/plain

数据以纯文本形式进行编码,其中不含任何控件或格式字符

0 0
原创粉丝点击