1 package com.lk.test;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.MultipartConfig;
 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 import javax.servlet.http.Part;
13 
14 //@WebServlet("/UploadServlet")
15 @MultipartConfig 
16 // @MultipartConfig(location="D:\\")
17 public class UploadServlet extends HttpServlet {
18 
19     public void doGet(HttpServletRequest request, HttpServletResponse response)
20             throws ServletException, IOException {
21         this.doPost(request, response);
22     }
23 
24     public void doPost(HttpServletRequest request, HttpServletResponse response)
25             throws ServletException, IOException {
26 //        String path = request.getServletContext().getRealPath("/image/");
27 //        String path = request.getRealPath("/");
28         String path = request.getSession().getServletContext().getRealPath("");
29 //        String path = request.getRequestURI(); 
30 //        String path = request.getContextPath();
31         Part part = request.getPart("file");
32 System.out.println("path为:" + path);
33         UploadServlet.class.getResource("com.lk.test.UploadServlet").getPath();
34         // 获取请求头
35         String header = part.getHeader("content-disposition");
36         String filename = getFileName(header);//得到文件名
37 
38         part.write (path +filename);
39         response.setCharacterEncoding("gbk");
40         PrintWriter out = response.getWriter();
41         
42         out.print(path);
43         out.print("</br>upload success");
44     }
45 
46     public String getFileName(String header) {
47         /**
48          * String[] tempArr1 =
49          * header.split(";");代码执行完之后,在不同的浏览器下,tempArr1数组里面的内容稍有区别
50          * 火狐或者google浏览器下:
51          * tempArr1={form-data,name="file",filename="snmp4j--api.zip"}
52          * IE浏览器下:tempArr1={form-data,name="file",filename="E:\snmp4j--api.zip"}
53          */
54         String[] tempArr1 = header.split(";");
55         /**
56          * 火狐或者google浏览器下:tempArr2={filename,"snmp4j--api.zip"}
57          * IE浏览器下:tempArr2={filename,"E:\snmp4j--api.zip"}
58          */
59         String[] tempArr2 = tempArr1[2].split("=");
60         // 获取文件名,兼容各种浏览器的写法
61         String fileName = tempArr2[1].substring(
62         tempArr2[1].lastIndexOf("\\") + 1).replaceAll("\"", "");
63         return fileName;
64     }
65 
66 }