梦入琼楼寒有月,行过石树冻无烟

JSP Servlet 文件上传

在Java Server Pages语言之中,文件上传功能主要通过ServletPart文件对象进行实现,其中在Servlet3.0之前的版本无法直接进行文件上传的支持,需要使用第三方框架。

@MultipartConfig

@MultipartConfig 主要引用与Servlet中,其可提供对文件上传的支持,该注解主要写在Servlet之上。

ID DA FA
location string 指定上传目录
maxFileSize long 对上传文件大小进行限制(默认值为-1,即没有限制)
maxRequestSize login 指定上传文件个数 (默认值为-1,即没有限制)

Part

在文件上传之中,每个文件通常使用javax.servlet.http.Part对象进行表示,当单个上传文件时会通过对象调用方法getPart(String name)来获取Part文件对象。

ID DA FA
void delete() 上出任何相关的临时文件
String getContentType() 获取客户端浏览器设置的MIME类型
String getHeader(String name) 获取指定part头的一个字符串
InputStream getInputStream() 获取一个输入流、用于读取文件内容
String getName() 获取表单文件域名称
long getSize() 获取文件大小
void write(String fileName) 将文件上传到fileName指定的目录

multipart/form-data

在Java Server Pages之中,一般常用的Servlet文件上传主要使用multipart/form-data来进行实现。而如果使用multipart/form-data实现需要使用外部扩展jar包,可通过http://www.jiangxue.org.cn/MultipartRequest.jar进行下载后放入WEB-INF/lib之中即可。

index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Upfile" method="post" enctype="multipart/form-data">
File:<input type="file" name="filename"/>
<input type="submit" value="up file"/>
</form>
</body>
</html>

Upfile.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;

/**
* Servlet implementation class Upfile
*/
public class Upfile extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public Upfile() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

// Part
MultipartRequest multipartrequest = new MultipartRequest(request,"/home/sun/Downloads");
out.print("File,ok!");
}

}

web.xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>Upfile</servlet-name>
<servlet-class>Upfile</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upfile</servlet-name>
<url-pattern>/Upfile</url-pattern>
</servlet-mapping>
</web-app>
⬅️ Go back