html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<lable>username</lable><input type="text" name="username">
<lable>img</lable><input type="file" name="img">
<input type="submit">
</form>
</body>
</html>
servlet:
package userservlet;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
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 java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
@WebServlet(name = "UploadServlet",urlPatterns = {"/upload"})
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//上传组件工厂
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
//创建上传组件工厂
ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);
//设置上传文件字符集
servletFileUpload.setHeaderEncoding("UTF-8");
//生成表单元素
try {
List<FileItem> fileItems=servletFileUpload.parseRequest(request);
for (FileItem fileItem:fileItems){
if(fileItem.isFormField()){//判断是否是表单
System.out.println(fileItem.getString());
}else{
//获取上传文件名称
String name=fileItem.getName();
byte[] b=fileItem.get();//获取文件内容
//获取在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径
String path=this.getServletContext().getRealPath("/");
System.out.println(path);
//在服务器的当前物理路径添加一个目录
File f=new File(path+File.separator+"upload");
//判断目录是否存在,不存在就创建
if(!f.isDirectory()){
f.mkdir();
}
//把要上传的文件名称追加到刚才的路径上
String filename=path+File.separator+"upload"+File.separator+name;
//根据文件文件创建一个文件输出流
FileOutputStream out=new FileOutputStream(filename);
//写出文件
out.write(b);
out.close();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}