首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

java上传文件到远程服务器(一)---HttpURLConnection方式

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>
返回列表