文件上传
文件上传的注意事项:
- 为了保证服务器的安全,上传文件应该放在外界无法直接访问的目录下,比如WEB-INF目录。
- 为了保证文件名不重复,为上传文件使用UUID方法,产生一个唯一的文件名
- 上传文件需要设置上传文件的最大值
- 可以在上传文件中设置文件上传的类型
文件上传的大小限制可以在SpringMVC框架的拦截器中设置
拦截器限制文件上传大小
文件上传的Servlet:
public class FileServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
//1.首先判断上传的文件是普通表单还是带文件的表单
if(!ServletFileUpload.isMultipartContent(request)){
return;//中止方法的运行。表明是一个普通的表单
}
//2.创建一个上传文件的路径,并创建文件夹
String uploadPath=this.getServletContext().getRealPath("/WEB-INF/upload");
File uploadFile=new File(uploadPath);
if (!uploadFile.exists()){
uploadFile.mkdir();
}
//2.1 我们可以根据需求创建一个临时文件
String tmpPath = this.getServletContext().getRealPath("/WEB-INF/tmp");
File file=new File(tmpPath);
if (!file.exists()){
file.mkdir();
}
//3.上传文件
try {
//3.1 创建DiskFileItemFactory对象,处理文件路径或者大小限制
DiskFileItemFactory diskFileItemFactory = getDiskFileItemFactory(file);
//3.2 获取ServletFileUpload
ServletFileUpload servletFileUpload = getServletFileUpload(diskFileItemFactory);
//3.3 处理上传的文件
//将请求解析封装为FileItem对象,从ServletFileUpload中获取
String msg = uploadParseRequest(servletFileUpload, request, uploadPath);
if(msg