HTML页面:
<!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=gb2312" />
<title>HTTP协议学习</title>
</head>
<body>
<form action="test1.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input name="field_1" type="text" value="123" />
<br/>
<input name="field_1" type="text" value="456" />
<br/>
<input name="field_2" type="text" value="789" />
<br/>
<input type="file" name="upload_file[]" />
<br/>
<input type="file" name="upload_file[]" />
<br/>
<input type="submit" name="Submit" value="submit" />
</form>
</body>
</html>
PHP页面:
<?
print_r($_FILES);
print_r($_POST);
?>
1.
当表单method为POST,并且enctype为multipart/form-data情况
1.1 请求数据
POST /go/test/test1.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost/go/test/test.php
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7db1192f70f20
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2)
Host: localhost
Content-Length: 906
Connection: Keep-Alive
Cache-Control: no-cache
-----------------------------7db1192f70f20
Content-Disposition: form-data; name="field_1"
123
-----------------------------7db1192f70f20
Content-Disposition: form-data; name="field_1"
456
-----------------------------7db1192f70f20
Content-Disposition: form-data; name="field_2"
789
-----------------------------7db1192f70f20
Content-Disposition: form-data; name="upload_file[]"; filename="D:\text_file1.txt"
Content-Type: text/plain
This is content of the text file 1.
Other files are same to text file.
-----------------------------7db1192f70f20
Content-Disposition: form-data; name="upload_file[]"; filename="D:\text_file2.txt"
Content-Type: text/plain
This is content of the text file 2.
Other files are same to text file.
-----------------------------7db1192f70f20
Content-Disposition: form-data; name="Submit"
submit
-----------------------------7db1192f70f20--
1.2 响应数据
HTTP/1.1 200 OK
Date: Thu, 27 Jan 2011 03:32:47 GMT
Server: Apache/2.2.15 (Win32) PHP/5.2.13
X-Powered-By: PHP/5.2.13
Content-Length: 849
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Array
(
[upload_file] => Array
(
[name] => Array
(
[0] => text_file1.txt
[1] => text_file2.txt
)
[type] => Array
(
[0] => text/plain
[1] => text/plain
)
[tmp_name] => Array
(
[0] => C:\WINDOWS\Temp\php14B.tmp
[1] => C:\WINDOWS\Temp\php14C.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 73
[1] => 73
)
)
)
Array
(
[field_1] => 456
[field_2] => 789
[Submit] => submit
)
1.3 简要分析说明
(1) 在消息头中存在一个“Content-Type: multipart/form-data;
boundary=---------------------------7db38a3570f20
",其中的boundary是用来告诉程序如何把消息体中各个字段分开;
(2)
HTTP协议发送的时候,并不关心各个field的name,即允许一次发送中有多个field有相同的名字。PHP处理这种数据时,如果名字相同且名字以
“[]”结尾,则会把这些数据放入一个数组中(见upload_file);如果名字相同但不是以“[]”结尾,则后面一个field会覆盖前面的field
(见field_1);
(3) 发送文件的时候是直接把文件内容放在该区域的boundary区域。
2.
当表单method为POST,并且enctype为application/x-www-form-urlencoded情况
2.1 请求数据
POST /go/test/test1.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://localhost/go/test/test.php
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2)
Host: localhost
Content-Length: 129
Connection: Keep-Alive
Cache-Control: no-cache
field_1=123&field_1=456&field_2=789&upload_file%5B%5D=D%3A%5Ctext_file1.txt&upload_file%5B%5D=D%3A%5Ctext_file2.txt&Submit=submit
2.2 响应数据
HTTP/1.1 200 OK
Date: Thu, 27 Jan 2011 03:51:56 GMT
Server: Apache/2.2.15 (Win32) PHP/5.2.13
X-Powered-By: PHP/5.2.13
Content-Length: 209
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Array
(
)
Array
(
[field_1] => 456
[field_2] => 789
[upload_file] => Array
(
[0] => D:\\text_file1.txt
[1] => D:\\text_file2.txt
)
[Submit] => submit
)
2.3 简要分析
(1)
表单为POST方式的时候,当enctype为空时,enctype默认为“application/x-www-form-urlencoded”;
(2) 此时的文件域数据被当作普通数据来处理;
(3) 此时发送数据不是放在boundary之中而是组合成一个URL queryString的形式;
(4) 所有的field_name和field_value都被URL编码。
分享到:
相关推荐
3. **数据分包与发送**:文件内容被分成若干数据包,每个数据包通过TCP连接发送到客户端。 4. **接收与重组**:客户端接收到来自服务器的数据包,按照顺序重新组合成原始的字节流。 5. **文件写入**:客户端将接收到...
caster是服务器端,负责接收、存储和发送差分改正信息;RINEX数据流是标准的数据格式,用于交换GPS观测数据;客户端则用于连接caster,接收并应用这些改正数据。在MATLAB中实现NTRIP客户端,我们需要构建网络连接、...
CSMA/CD是局域网中的一种介质访问控制方式,某站点想要发送数据,必须首先侦听信道,如果信道空闲,立即发送数据并进行冲突检测;如果信道忙,继续侦听信道,直到信道变为空闲,才继续发送数据并进行冲突检测。 ...
- **Chunk(块)**:消息的一部分,消息在网络发送前会被拆分成若干个小的数据块。 - **Chunk Stream(块流)**:通信过程中允许数据块单向流动的逻辑通道。 - **Multiplexing(复用)**:将独立的音频/视频数据合并...
HLS(HTTP Live Streaming)是一种由苹果公司提出的流媒体传输协议,目的是为了有效地传输无界多媒体数据流。通过HLS协议,可以将音频、视频和字幕等多媒体内容分割成小的数据包,再由服务器推送至客户端播放器进行...
存传输的时候,网络数据流和文件数据流都是以字节的形式包装的,需要占用虚拟机中的大量内存空间,当文件过大时,就会出现内存溢出的错误,我们采取的方法是大文件按照传输块分成若干次发送。 在Android系统中,...
LLDP(Link Layer Discovery Protocol)是一种标准的链路层发现协议,用于将本端设备的管理地址、设备标识、接口标识等信息组织起来,并发布给自己的邻居设备,邻居设备收到这些信息后将其以标准的管理信息库MIB...
ASP(Active Server Pages)是微软公司推出的一种服务器端脚本环境,用于创建动态交互式网页。在“基于ASP的多特软件爬虫DT 2022 v6.0.zip”中,我们可以看到这个项目是利用ASP技术来实现的一款多特软件下载站的网络...
分组交换是现代计算机网络的主要工作方式,它将大的数据报文分割成若干个较小的数据块,每个块加上首部成为分组,然后逐个发送。分组在接收端被重新组合,这种方式允许网络动态选择最佳路径,但不保证分组的可靠交付...
在服务器端,你需要检查`HttpRequest`对象中的`HttpWebRequest.Headers["Range"]`,这将包含客户端请求下载的特定块的范围。 4. **发送数据块**:根据客户端的范围请求,从服务器读取相应数据块并写入`HttpResponse...
- ASP提供了若干内置对象,如Request(获取用户请求信息)、Response(向客户端发送信息)、Session(保存用户会话数据)、Application(在整个应用程序范围内共享数据)和Server(服务器对象,用于执行服务器端操作...
- TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的协议,它在发送数据之前需要先建立连接,并在数据传输完成后关闭连接。TCP提供了可靠的数据传输服务,能够保证数据按序、无丢失地传输。 - ...
- **往返时间(RTT)**:从发送端发送数据开始,到发送端收到来自接收端的确认所需的时间。 - **利用率**:网络资源的使用程度。 #### 十五、网络利用率与时延的关系 假设网络的利用率达到90%,则网络时延将是其...
1. ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于创建动态交互式网页。ASP技术允许开发人员在服务器端编写脚本,处理用户请求并返回结果。当客户端浏览器请求ASP网页时,服务器执行ASP代码并...
在《TCP/IP 详解 卷三》中,作者首先介绍了客户-服务器事务的概念,这是一种通信模式,其中客户端(通常是用户)发起请求到服务端,而服务端则负责处理请求并返回响应。这种模型广泛应用于互联网的各种服务中,例如...
(1)物理层要尽可能地屏蔽掉物理设备和传输媒体,通信手段的不同,使数据链路层感觉不到这些差异,只考虑完成本层的协议和服务。 (2)给其服务用户(数据链路层)在一条物理的传输媒体上传送和接收比特流(一般为...
物理层负责处理原始的比特流,不关心数据的意义,只关注如何将这些比特正确地从发送端传送到接收端。 2. **电子邮件传递协议**: - 电子邮件的传递主要由**POP3**(Post Office Protocol Version 3)和**SMTP**...
3. **C/S架构**:客户端/服务器架构(Client/Server architecture)是一种分布式应用程序架构,其中客户端负责显示数据并处理用户交互,而服务器端则提供数据处理和存储等功能。 #### 三、客户端代码详解 1. **...