在用网页上传文件时, html form的enctype要设为"multipart/form-data"(默认的mime type是"application/x-www-form-urlencoded")
MIME:Multipurpose Internet Mail Extensions
本来是表示email所支持的内容格式, 后来用途被扩展用于表示内容类型(不仅限email), 包括互联网上的内容类型
用mime规范定义的内容类型在http中被使用
解释:
http://en.wikipedia.org/wiki/MIME#MIME_headers
上传文件时, Contet-Type设为multipart/form-data
(Content-Type格式见http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17, media type格式见http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7)
使用mutlipart类型时, 需要包含boundary作为media type的一部分
HTTP 1.1标准 3.7.2 Mulitpart Types中写到All multipart types share a common syntax, ..., and MUST include a boundary parameter as part of the media type value.
关于例子, 可以在RFC 1867中的第6节Examples中看到
<FORM ACTION="http://server.dom/cgi/handle" ENCTYPE="multipart/form-data" METHOD=POST> What is your name? <INPUT TYPE=TEXT NAME=submitter> What files are you sending? <INPUT TYPE=FILE NAME=pics> </FORM> and the user types "Joe Blow" in the name field, and selects a text file "file1.txt" for the answer to 'What files are you sending?' The client might send back the following data: Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name="field1" Joe Blow --AaB03x content-disposition: form-data; name="pics"; filename="file1.txt" Content-Type: text/plain ... contents of file1.txt ... --AaB03x--