用JavaBean实现文件上载(2)
打开Demo.out文件,我们可以看到如下内容:
-----------------------------7d15340138
Content-Disposition: form-data; name="Author"
A. Christie
-----------------------------7d15340138
Content-Disposition: form-data; name="Company"
Abisco
-----------------------------7d15340138
Content-Disposition: form-data; name="Filename"; filename="C:\123data\abisco.Html"
Content-Type: text/html
<html>
<head>
<title>Abisco</title>
</head>
</html>
-----------------------------7d15340138--
可以看到,HTTP请求体内包含了所有的表单输入,包括上载的文件。这些输入数据的分隔由一个分隔符实现。分隔符由一系列的“-”字符和一个随机数字构成。在上面的例子中,分隔符为“-----------------------------7d15340138”。最后一个分隔符结束请求体,这个分隔符的后面多出两个“-”符号。
对于非文件类型的输入数据,分隔符后面跟着下面这行内容:Content-Disposition: form-data; name=inputName。其中inputName是表单元素的名字。例如:Content-Disposition: form-data; name="Author"。在这行内容的后面,紧跟着两个连续的回车换行符和表单元素值。
而对于文件型输入域,分隔符的后面有两行内容。第一行内容包含输入元素的名字以及上载文件在客户端的完整路径,如上例中这行内容是“Content-Disposition: form-data; name="Filename"; filename="C:\123data\abisco.html"”。这行内容指出文件输入元素的名字是filename,文件的路径是“C:\123data\abisco.html”。注重Windows浏览器会设置文件路径,而Unix/Linux以及Mac浏览器只发送文件名字。
第二行包含了文件的内容类型,因此它的具体内容和上载的文件有关。本例中第二行的内容是“Content-Type: text/html”。
和非文件输入元素一样,文件内容在两个连续的回车换行符之后正式开始。
(未完待续)