通过解析HTTP协议自己实现文件上传
来源:互联网 发布:学生程序员简历 编辑:程序博客网 时间:2024/05/25 18:12
JSP代码
两个文本输入框,两个上传文件,使用POST提交,这时通过HTTP协议发送的请求是什么样的呢?
通过HTTP协议分析其可以看到
请求行
POST /myupload/uploadDo HTTP/1.1
请求头
Host: localhost:8820
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:8820/myupload/index.jsp
Cookie: JSESSIONID=D86CEA4F6F230AFBBDAAE54D724F73D0
Content-Type: multipart/form-data; boundary=---------------------------122872775310383
Content-Length: 655
空行
消息体
-----------------------------122872775310383
Content-Disposition: form-data; name="txt"
dafdfa
-----------------------------122872775310383
Content-Disposition: form-data; name="txt1"
sdf
-----------------------------122872775310383
Content-Disposition: form-data; name="myfile"; filename="tt.txt"
Content-Type: text/plain
11111111111
222
333333333
1111111
3333333
5444444444
-----------------------------122872775310383
Content-Disposition: form-data; name="myImg"; filename="1.txt"
Content-Type: text/plain
adaaaaaaaaaaa
sbbbbbbbbbbbbbbbb
dddddddddd
daaaaaaaaa
eeeeeeeeee
-----------------------------122872775310383--
和一般的POST请求有什么不一样呢,对了,在消息体中用boundary进行了分割,可以清楚的看到,前两个是文本框中上传的内容,后两个是上传的文件,区别就是在Content-Disposition这行中多了filename这个属性,好了要上传文件下面的任务就是解析这个消息体了,上代码
这段程序只能处理文本文件,要是处理图片就需要使用字节流了。
下面再了解下RFC1867协议
RFC1867协议主要是在HTTP协议的基础上为INPUT标签增加了file属性,同时限定了Form的method必须为POST,ENCTYPE必须为multipart/form-data。当然还增加了一些与此相关属性,但都不是很重要,我们在此不作讨论。
- 通过解析HTTP协议自己实现文件上传
- 通过Http协议实现文件上传
- 通过Http协议实现文件上传
- android通过http协议实现文件上传
- 通过HTTP协议实现文件上传
- 通过 http 协议上传文件
- 通过 http 协议上传文件
- 通过HTTP协议上传文件
- 通过 http 协议上传文件
- 通过HTTP协议上传文件
- 通过HTTP协议上传文件
- 通过HTTP协议上传文件
- 通过 http 协议上传文件
- 通过 http 协议上传文件
- 通过 http 协议上传文件
- Android通过HTTP协议实现上传文件数据
- 通过HTTP协议向服务器端上传文件
- [转]通过 http 协议上传文件
- LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol
- JavaScript 脚本window.opener用法
- PDM的最新进展
- 补码的应用:从buffer里的一段char*根据数据类型和长度转换成相应的整型
- 解决锁定键盘鼠标
- 通过解析HTTP协议自己实现文件上传
- Android论坛大全
- Linux学习
- 数据库备份与恢复(二)
- 急求啊!用C语言设计一个简单实用的人和电脑互取苹果的游戏程序。
- LINK : fatal error LNK1104: cannot open file 'LIBCD.lib'
- C/C++语言中可变参数的用法
- 要做的还有很多
- 如何使用dbms_stats分析统计信息