设为首页 加入收藏

TOP

Java使用HttpURLConnection上传文件
2014-11-23 22:00:04 来源: 作者: 【 】 浏览:15
Tags:Java 使用 HttpURLConnection 上传 文件

从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求。但是如果没有页面的话要怎么上传文件呢?


由于脱离了浏览器的环境,我们就要自己去完成数据的收集并发送请求,所以就很麻烦了。


首先我们来写个JSP页面并看看浏览器发出的Http请求是什么样的


JSP页面:





TestSubmit



  参数

  文件1

  文件2

  




假如我参数写的内容是hello word,然后二个文件是二个简单的txt文件,form提交的信息为:


-----------------------------7da2e536604c8
Content-Disposition: form-data; name="username"


hello word
-----------------------------7da2e536604c8
Content-Disposition: form-data; name="file1"; filename="D:/haha.txt"
Content-Type: text/plain


haha
hahaha
-----------------------------7da2e536604c8
Content-Disposition: form-data; name="file2"; filename="D:/huhu.txt"
Content-Type: text/plain


messi
huhu
-----------------------------7da2e536604c8--


研究下规律发现有如下几点特征:


1. 第一行是“-----------------------------7da2e536604c8”作为分隔符,然后是“/r/n”回车换行符。 这个7da2e536604c8分隔符浏览器是随机生成的。


2. 第二行是Content-Disposition: form-data; name="username"。代表form表单的数据域,name对应页面input标签的name值。


3. 第三行是“/r/n”回车换行符。


4. 第四行是参数username的值。


5. 第五行是7da2e536604c8分隔符。


6. 从第六行到第十行和从第十二行到第十六行,分别是上传的两个文件的数据域。


7. 第十二行是Content-Disposition: form-data; name="file2"; filename="D:/huhu.txt"。name对应页面input标签的name值,filename对应要上传的文件名(包括路径在内)。


8. 第十三行如果是文件就有Content-Type: text/plain。这里上传的是txt文件所以是text/plain,如果上穿的是jpg图片的话就是image/jpg了,可以自己试试看看。然后就是回车换行符。


9. 第十五、十六行就是文件的内容了。如:


messi
huhu


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HttpClient使用详解 下一篇HttpURLConnection与HttpClient区..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: