采用注解@MultipartConfig
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取前台请求的所有文件(包含普通字段在内)
System.out.println(request.getParameter("texts"));
Collection<Part> parts = request.getParts();
System.out.println(parts.size());
for (Part p : parts) {
//普通字段封装为part对象数据为null
if (p.getSubmittedFileName() != null) {
InputStream inputStream = p.getInputStream();
BufferedInputStream bis = new BufferedInputStream(inputStream);
File file = new File("C://Users//Fu123//Desktop//hjk", UUID.randomUUID() + p.getSubmittedFileName());
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[204800000];
int len = 0;
while ((len = bis.read(b)) != -1) {
fos.write(b, 0, len);
}
bis.close();
fos.flush();
fos.close();
}
}
}
采用导包形式
先导入这两个依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");// 设置获取字体
response.setCharacterEncoding("UTF-8"); // 设置返回字体
//ServletContext ctx = getServletConfig().getServletContext();// 获取上下文 方式2
ServletContext ctx = request.getServletContext();// 获取上下文应用
DiskFileItemFactory factory = new DiskFileItemFactory();// 自动导入类 使用工具 commons-fileupload
File repository = (File) ctx.getAttribute("javax.servlet.context.tempdir");// 获取临时文件的存储路径
factory.setRepository(repository);// 设置工程对象的仓库
String basePath = ctx.getRealPath("/res");// 设置存储路径
System.out.println(basePath);
ServletFileUpload handler = new ServletFileUpload(factory);// 实例化 servletFileupload 上传
try {
List<FileItem> items = handler.parseRequest(request);
for (FileItem fileItem : items) {
if (fileItem.isFormField()) {
System.out.print("非文件数据");
} else {
String fileName = fileItem.getName();// 获取文件名
String fileType = fileItem.getContentType();// 获取文件类型
System.out.println(fileName);
System.out.println(fileType);
if (fileType != "do") {
File file = new File("C://Users//Fu123//Desktop//hjk" + "/" + fileName);// 创建文件实例
try {
fileItem.write(file);// 写入数据到文件
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}