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 }