java上传文件到远程服务器(一)---HttpURLConnection方式
- UID
- 1066743
|
java上传文件到远程服务器(一)---HttpURLConnection方式
客户端
客户端HttpURLConnection上传文件到远程服务器的原理是通过构造参数模仿form提交文件的http请求,把文件提交到远程服务器的接收路由中。
index.jsp的代码为:
<%@ include file="./include/header.jsp"%>
<div id="page-wrapper">
<div id="page-inner">
<div class="row">
<div class="col-md-12">
<h1 class="page-header">
HttpURLConnection <small>HttpURLConnection</small>
</h1>
</div>
</div>
<!-- /. ROW -->
<form class="form-horizontal" name="upform" action="upload" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="sourceModule" class="col-sm-2 control-label">上传文件:</label>
<div class="col-sm-10">
<input type="file" name="filename"/><br/>
<input type="submit" value="提交" /><br/>
</div>
</div>
</form>
<!-- /. ROW -->
</div>
<!-- /. PAGE INNER -->
</div>
<!-- /. PAGE WRAPPER -->
<%@ include file="./include/footer.jsp"%>
<script type="text/javascript">
$(document).ready(function () {
});
</script>
</body>
</html>
当提交表单里包含文件上传的时候,即Form的enctype属性值为multipart/form-data时,后台是无法像普通表单那样通过request.getParameter来获取用户提交的数据的。
这时候,当然可以通过解析提交到服务器的数据流来得到数据了,但是这样不但麻烦而且容易出错。
最好的方式是使用第三方的jar包获取数据,这方面有很多现成的成熟优秀的jar包。最常用的时以下三个:
apache的commons-fileupload : http://commons.apache.org/fileupload/
O'Reilly的cos: http://www.servlets.com/cos/index.html
jspsmart的SmartUpload:官方不提供下载了,google搜吧。
其中,据评测效率最高的是COS,最慢的是SmartUpload;最常用的是common-upload;文件太大时SmartUpland会崩溃。
我们这里使用commons-fileupload,需要引入两个jar包:commons-fileupload-1.3.1.jar和commons-io-2.4.jar。
下载地址:
http://central.maven.org/maven2/commons-fileupload/commons-fileupload/1.3.1/commons-fileupload-1.3.1.jar
http://central.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.jar
如果是maven项目,在pom.xml中增加:
<!-- https://mvnrepository.com/artifa ... /commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency> |
|
|
|
|
|