码迷,mamicode.com
首页 > 移动开发 > 详细

Android(java)学习笔记214:开源框架的文件上传(只能使用Post)

时间:2015-09-06 16:24:02      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:

1.文件上传给服务器,服务器端必然要写代码进行支持,如下:

我们新建一个FileUpload.jsp的动态网页,同时我们上传文件只能使用post方式(不可能将上传数据拼凑在url路径下),上传数据Apache给我们提供了完善的框架,我们只要引入commons-fileupload-1.2.2.jar  和  commons-io-2.0.1.jar就可以使用这个Apache给我们封装好的框架,这两个jar放到如下目录下:

WebContent/WEB-INF/lib/

引入jar包之后,接下来我们新建一个Servlet程序,命名为"UploadServlet.java",整个工程如下图:

技术分享

 

 

2.PC端上传数据到服务器:

编写服务器端代码UploadServlet.java代码

 1 package com.himi.web;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.util.List;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.annotation.WebServlet;
 9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12 
13 import org.apache.commons.fileupload.FileItem;
14 import org.apache.commons.fileupload.FileItemFactory;
15 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
16 import org.apache.commons.fileupload.servlet.ServletFileUpload;
17 
18 /**
19  * Servlet implementation class UploadServlet
20  */
21 @WebServlet("/UploadServlet")
22 public class UploadServlet extends HttpServlet {
23     private static final long serialVersionUID = 1L;
24 
25     /**
26      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
27      */
28     protected void doPost(HttpServletRequest request,
29             HttpServletResponse response) throws ServletException, IOException {
30         // 判断上传数据是否包含文件,true--包含文件,false--不包含文件
31         boolean isMultipart = ServletFileUpload.isMultipartContent(request);
32         //如果上传数据包含文件
33         if (isMultipart) {
34             //获取servlet上下文真实的路径
35             String realpath = request.getSession().getServletContext()
36                     .getRealPath("/files");
37             //打印servlet上下文真实的路径给用户观察
38             System.out.println(realpath);
39             File dir = new File(realpath);
40             if (!dir.exists())
41                 dir.mkdirs();
42             FileItemFactory factory = new DiskFileItemFactory();
43             ServletFileUpload upload = new ServletFileUpload(factory);
44             upload.setHeaderEncoding("UTF-8");
45             try {
46                 //工具类ServletFileUpload解析我们的http的post请求的参数数据,解析结果赋给一个List集合
47                 //List集合中是我们form(jsp)标签中我们的每个input节点的数据
48                 List<FileItem> items = upload.parseRequest(request);
49                 for (FileItem item : items) {
50                     //如果是一个普通的表单
51                     if (item.isFormField()) {
52                         String name1 = item.getFieldName();// 得到请求参数的名称
53                         String value = item.getString("UTF-8");// 得到参数值
54                         System.out.println(name1 + "=" + value);
55                     } else {//如果里面有文件数据,就把文件写到当前servlet上下文真实路径里面,文件名称是以系统事件命名的
56                         item.write(new File(dir, System.currentTimeMillis()
57                                 + item.getName().substring(
58                                         item.getName().lastIndexOf("."))));
59                     }
60                 }
61             } catch (Exception e) {
62                 e.printStackTrace();
63             }
64         }
65     }
66 
67 }

同时我们还要编写FileUpload.jsp代码如下:

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 2 <html>
 3 <head>
 4 <%@ page language="java" contentType="text/html; charset=utf-8"
 5     pageEncoding="utf-8"%>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 <title>???????</title>
 8 </head>
 9 <body>
10 
11 <form action="UploadServlet" method="post" enctype="multipart/form-data">
12       请选择文件上传<input type="file" name="file"> <br>
13       <input type="submit" value="提交"> <br>
14 </form>
15 
16 </body>
17 </html>

运行FileUpload.jsp动态页面在Tomcat服务器上,显示效果如下:

技术分享

 

复制路径http://localhost:8080/web/FileUpload.jsp到360浏览器上,如下:

技术分享

 

这里我们选择文件为桌面上的一个 心得.txt ,我们提交之后,观察浏览器 服务器反应,如下:

浏览器的反应:

技术分享

 

 

技术分享

 

服务器的反应:

技术分享

 

 

 

追溯到这个打印出来的路径,我们找到了我们上传的文件,如下:

技术分享

 

打开文件,文件内容是对的。

到这里说明PC到服务器端的文件上传是没有问题的

Android(java)学习笔记214:开源框架的文件上传(只能使用Post)

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4785275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!