html代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<form action="fileUpload" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username" /><br>
密码:<input type="password" name="password" /><br>
上传文件:<input type="file" name="registfile" /><br>
上传文件1:<input type="file" name="registfile1" /><br>
<input type="submit" value="提交" />
</form>
</body>
</html>
java代码:
package com.zx.servlet;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/fileUpload")
@MultipartConfig
public class FileUploadServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
* 1.从请求对象中读取文件
* 1.1要求form的enctype必须为multipart/form-data
* 1.2input的type为file,根据name属性的值去获取
*/
Part part = req.getPart("registfile");
/*
* 2.获取文件名
* 注意:Part对象没有单独获取文件名的方法,需要我们自己去写
*/
String header = part.getHeader("Content-Disposition");
//form-data; name="registfile"; filename="CefClientSubProcess.exe"
String fileName = header.substring(header.lastIndexOf("=")+2, header.length()-1);
// System.out.println("filename:"+fileName);
//3.指定上传目录
//3.1获取父路径
String url = req.getServletContext().getRealPath(""); //获取真实路径
for(int i=1;i<=2;i++) {
url = url.substring(0, url.lastIndexOf("\\"));
}
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
String fileUrl = url + File.separator + "file"+ File.separator +
year + File.separator + month + File.separator + day + File.separator;
//如果父路径不存在,则创建
File file = new File(fileUrl);
if (!file.exists()) {
file.mkdirs();
}
// System.out.println(fileUrl+fileName);
//3.2将文件上传到执行路径
part.write(fileUrl+fileName);
}
}