RFC1867协议
在原有的基础上添加了对file域的支持,同时限定了form的method必须为POST,enctype必须为multipart/form-data.
实际上enctype最后会转换成Content-Type。
为了方便查看我们写一个页面,然后使用firefox的firebug插件查看network信息和google chrome的debug功能。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>啊啊啊</title>
</head>
<body>
ads高
<form action="http://127.0.0.1:8080/daowole/rb1" method="post" enctype="multipart/form-data"><input
name="body" value="123" /> <input name="name" type="file" /><input
type="submit" /></form>
</body>
</html>
提交后首先查看头信息(Request headers)
firefox将headers和content分隔开了,卡起来不清晰,我就看google了。
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:140952
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryuwYcfA2AIgxqIxA0
Host:127.0.0.1:8081
Origin:null
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16
首先是Content-Type
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryuwYcfA2AIgxqIxA0
首先指定了表单类型为multipart/form-data;。
boundary是分隔符
因为上传文件不在使用原有的http协议了。请求内容不再可能以
x = y方式发送了。而使用了
分隔符
字段内容
分隔符号
字段内容2
而boundary就是指定分隔符号的标志。
请求的内容就应该是这样的了。
------WebKitFormBoundaryuwYcfA2AIgxqIxA0
Content-Disposition: form-data; name="body"
123
------WebKitFormBoundaryuwYcfA2AIgxqIxA0
Content-Disposition: form-data; name="name"; filename="QQ.exe"
Content-Type: application/x-msdownload
文件本身的字节
分享到:
相关推荐
本篇将详细探讨Java处理文件上传的底层实现,以及如何使用Java模拟POST协议来实现文件上传。 首先,我们需要理解文件上传的基本原理。在HTTP协议中,文件上传通常通过POST请求进行。当用户在表单中选择文件并提交时...
通常,文件上传是通过POST请求实现的,其中包含一个名为"multipart/form-data"的Content-Type,用于分隔不同的数据部分。每个部分都有自己的边界,以便服务器能够正确解析数据。 在C#中,我们可以利用System.Net...
在IT领域,尤其是在网络通信和数据传输中,"boundary数据解析"是一个重要的概念,它主要与HTTP协议中的多部分表单...对于开发处理文件上传、表单提交等功能的Web服务或者客户端应用来说,掌握这一技术是必不可少的。
在Java编程语言中,HTTPURLConnection是Java标准库提供...虽然这需要对HTTP协议有一定的理解,但它是理解网络编程和文件上传原理的一个好起点。在实际开发中,我们还需要考虑如安全性、错误处理和性能优化等更多因素。
在Python中进行文件上传时,有时会遇到需要指定`boundary`的情况,特别是在处理`multipart/form-data`类型的HTTP请求时。这种格式通常用于浏览器提交表单数据,尤其是包含文件上传的表单。`boundary`是一个字符串,...
C# http系列之以form-data方式上传多个文件及键值对集合到远程服务器是指在C#中使用http协议以form-data方式上传多个文件及键值对集合到远程服务器的技术。这种技术广泛应用于云端应用、第三方应用平台、开发平台等...
首先,VB中的文件上传通常与Web Forms或ASP.NET相关联,虽然这里提到的是VB,但可能指的是VBScript或者VB6,因为这些版本也支持文件上传功能。VBScript通常用于ActiveX控件或Classic ASP页面,而VB6则用于桌面应用...
在.NET框架中,WinForm应用程序可以利用HTTP协议与Web服务器进行通信,实现文件上传功能。本文将详细解析如何在WinForm界面中实现文件上传至服务器的过程,并基于提供的压缩包文件"Upload_Win"来探讨其内容。 首先...
通用文件上传下载接口使用说明提供了详细的文件上传和下载接口信息,包括请求方法、传输协议、请求数据格式和回应数据格式等,为开发者提供了一个明确的指南,帮助他们更好地使用文件上传下载接口。
1. **HTTP POST请求**:在HTTP协议中,文件上传通常使用POST方法,因为GET方法不适用于大文件传输。POST请求可以携带数据,包括文件内容。 2. **Multipart/form-data编码**:文件上传时,数据会被编码为Multipart/...
本文将详细讲解如何通过模拟HTTP请求来实现文件上传,这对于非安卓平台的接口开发者进行接口调试至关重要。 HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,它定义了客户端和服务器之间通信的数据格式...
在Web开发中,HTTP POST请求常用于向服务器发送数据,特别是在涉及用户交互,如表单提交或文件上传时。"multipart/form-data"是HTTP协议中一种特殊的Content-Type,专为处理混合类型的数据,如文本、文件等。这个...
通过这个过程,我们可以看到使用Socket实现HTTP POST文件上传涉及到网络通信、HTTP协议和数据编码等多个方面。这只是一个基础的实现,实际的应用中可能还需要考虑更多因素,如安全性、效率和错误处理等。在开发过程...
总的来说,Android中的文件上传涉及到HTTP协议的理解,特别是POST请求和多部分表单数据的构造。在实际应用中,通常会使用库如Retrofit、Volley或OkHttp等来简化这一过程,而不是手动编写网络请求的细节。这些库提供...
文件上传和下载是HTTP协议的常见应用场景,特别是在Web应用程序中。让我们深入探讨这两个概念及其在实际开发中的实现。 文件上传通常涉及到用户通过浏览器将本地文件发送到服务器的过程。在HTTP上下文中,这通常是...
下面将详细介绍如何使用Java实现文件上传到服务器的步骤、涉及的技术以及关键知识点。 首先,了解基本流程: 1. **选择文件**:在Java应用中,可以使用`JFileChooser`组件让用户选择要上传的文件。 2. **读取文件...
在现代软件开发中,文件上传功能是十分常见的需求之一,尤其在Web应用中。本篇文章将详细介绍如何利用Java编程语言结合Spring MVC框架来实现文件的远程上传功能。具体实现过程中,我们会采用HTTP协议中的`POST`方法...
总的来说,实现IHTTPModel接口进行文件上传涉及到对HTTP协议的理解,以及有效地处理和解析`multipart/form-data`数据。通过编写自定义的HttpModule,开发者可以创建一个高效且灵活的文件上传系统,能够处理各种大小...
文件上传的核心是通过HTTP协议完成数据传输。当用户选择文件并提交表单后,浏览器会根据表单中的`method`属性和`enctype`属性构建请求报文。 ##### (一)Form表单上传文件规范 1. **表单元素**:通常包含`...