Form表单提交后获取下载文件到服务器以及获取文件之外的参数数据
ServletDemo类
:
@MultipartConfig
@WebServlet("/ServletDemo")
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取文件之外的参数,前提是ServletDemo配置了@MultipartConfig
System.out.println(req.getParameter("name"));
//获取上传文件的组件
Part part = req.getPart("file");
//获取文件信息
String fileInfo= part.getHeader("content-disposition");
//fileInfo为form-data; name="file"; filename="a.png"
char[] chars = fileInfo.toCharArray();
String filename = "";
int index = fileInfo.length()-2;
while(chars[index]!='\"'){
filename = chars[index]+filename;
index--;
}
InputStream input= part.getInputStream();
FileOutputStream output= new FileOutputStream("D:\\IDEA_Workspace\\SSM\\src\\images\\"+filename);
BufferedInputStream inputStream = new BufferedInputStream(input);
BufferedOutputStream outputStream = new BufferedOutputStream(output);
int len;
byte[] bytes = new byte[1024];
while((len=inputStream.read(bytes))!=-1){
System.out.println(len);
outputStream.write(bytes,0,len);
}
//注意一定要flush一下否则无法完整写入
outputStream.flush();
inputStream.close();
outputStream.close();
}
}
表单提交html文件
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件提交样例</title>
</head>
<body>
<form action="http:///127.0.0.1:8080/ServletDemo" method="post" enctype="multipart/form-data">
<input type="text" name="name" value="jack">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
</body>
</html>