java使用commons-fileupload实现文件上传

servlet控制器代码

package com.lee.servlet;

import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

@WebServlet("/UploadServlet")
public class UploadServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");
		
		//判断前端是否有multipart
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);	//使用isMultipartContent获取前端是否存在multipart
		if(isMultipart) {
			FileItemFactory factory = new DiskFileItemFactory();	//FileItemFactory是接口,DiskFileItemFactory是具体实现类
			ServletFileUpload upload = new ServletFileUpload(factory);	//初始化ServletFileUpload对象
			try {
				List<FileItem> items = upload.parseRequest(request);  //利用parseRequest解析form表单中的所有字段,并保存到List列表中
				for(FileItem item : items) {	//遍历列表,上传文件
					String path = request.getSession().getServletContext().getRealPath("upload");	//获取upload的路径,路径可以通过getRealpath()获取,也可以直接使用字符串写死
					String fileName = item.getName();	//获取文件名
					File file = new File(path,fileName);	//定义file对象,初始化上传路径和文件名称
					item.write(file);
					System.out.println(fileName + " 上传成功!");
				}
			} catch (FileUploadException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

jsp显示层代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<form action="UploadServlet" method="post" enctype="multipart/form-data">
		<input type="file" name="file"><br>
		<input type="submit" value="提交">
	</form>


</body>
</html>
发布了65 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41286145/article/details/101030176