今天碰到一个新的需求,要求使用servlet上传文件到其他平台服务器,而本平台保存的文件为集中存储方式并没有存在本地所以想到了把servlet的html网页上传改成后台的http请求直接上传.
HttpUrlConnection模拟post表单进行文件上传
html网页上传:
<strong><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head> <title>Servlet 上传文件</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body >
<form name="uploadForm" method="POST"
enctype="MULTIPART/FORM-DATA"
action="KddjServiceServlet">
所属站:<input type="text" name="ssz" size="30"/>
发现时间:<input type="text" name="fxsj" size="30"/>
事件说明:<input type="text" name="sjsm" size="30"/>
图片:<input type="file" name="ydzc" size="30"/>
<input type="submit" name="submit" value="上传">
<input type="reset" name="reset" value="重置">
</form>
</body>
</html> </strong>
原理是: 分析文件上传的数据格式,然后根据格式构造相应的发送给服务器的字符串。
格式如下:这里的httppostfile是我自己构造的字符串,可以是其他任何的字符串
---------httppostfile(\r\n)
Content-Disposition: form-data; name="ssz" (\r\n)
(\r\n)
所属站(\r\n)
---------httppostfile(\r\n)
Content-Disposition: form-data; name="fxsj" (\r\n)