定义
在Servlet3.0之前实现文件上传需要借助Apache的上传组件,在3.0中,提供了一个Servlet API标准去支持文件上传。
上传前置
表单页面设置
- 设置enctype属性格式为multipart/form-data
- .method必须为post
Servlet文件上传步骤
1.声明@MultipartConfig注解 提供支持和处理
2.Part 获取文件
//获取多个文件
Collection<Part> parts = req.getParts();
//获取指定文件
Part uploadFile = req.getPart("uploadFile");
3.设置文件上传路径——获取web上下文的根路径下,新建一个文件夹
String upload = req.getServletContext().getRealPath("upload"); ||
String upload1 = req.getServletContext().getRealPath("/") + "upload";
4.获取文件的名称,解决文件名称相同的问题——给文件重命名
//利用当前时间的毫秒数加三位随机数给文件重命名
Random random=new Random();
long rename=System.currentTimeMillis()+ random.nextInt(1000)
//获取文件类型并进行分割
String type=uploadFile.getContextType();
String fileType=type.substring(type.lastIndexOf("."));
//拼接重命名名称
String fileName=rename+fileType;
5.文件.write(path) 将文件输出到指定路径中。
String path = upload + File.separator + fileName;
part.write(path);