使用文件上传需要引入Servlet jar和javaee jar,我这里使用的是Servlet3.1.0版和javaee7
<!--java ee-->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>7</version>
</dependency>
<!-- Servlet3.0 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
客户端编程
要上传文件,必须利用 multipart/form-data 设置HTML表单的enctype属性值,指在告诉服务器,向服务器发送二进制数据。
这个表单中必须包含类型file的一个输入元素,它会被显示成一个按钮,单击它时,会打开一个对话框,供我们选择文件。
表单页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Servlet文件上传</title>
</head>
<body>
<form action="/servlet/FileServlet" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="file"/>
<input type="submit"/>
</form>
</body>
</html>
服务器端
MultipartConfig可以带有以下属性,这些全部是可选的:
maxFileSize:表示最多可上传的文件容量。超过设定值的文件将会遭到拒绝。maxFileSize 的默认值为-1,表示不受限制。
maxRequestSize:表示允许多部分http请求的最大容量。它的默认值为-1,表示它是不受限制的。
location:将上传的文件保存到磁盘中的指定位置,调用Part 中的write 方法将用到它。
fileSizeThreshold:设定一个溢出尺寸,超过这个值之后,上传的文件将被写入磁盘。
在一个由多部分组成的请求中,每一个表单域,包括非文本域,都会被转换成一个Part。
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
/**
* Created by Administrator on 2018/4/3.
*/
/**
* 引入java Servlet3.1.0版本
* 使用javaee7.0版本
*/
//设置上传路径
@MultipartConfig(location = "D:\\ioTest\\")
public class FileServlet extends HttpServlet {
//使用Servlet3.0实现文件上传
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
//获取上传文件
Part part=request.getPart("file");
//上传文件 上传文件名称
part.write(part.getSubmittedFileName());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
最后注意一点,如果出现以下错误,很有可能是你的tomcat自带的servletapi版本太低,建议最好不要直接更换lib下的jar文件,
因为很有可能会发生冲突,所以还是建议在网上重新下载一个高版本的tomcat,
