废话不多说,代码都有注释
maven:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!--文件上传-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
一:前台代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
<script src="Jquery/jquery-1.7.2.js" type="text/javascript"></script>
<script>
window.fileurl="";
$(()=>{
$("#photo").click(()=>{
$("[name=photo]").click();
});
$("#submit").click(()=>{
let formData = new FormData(document.getElementById("form1"));
$.ajax({
url:"file",
type:"POST",
data:formData,
contentType:false,
processData:false,
success(response){
alert("上传成功!");
}
})
});
$("[name=photo]").change(function(){
window.fileurl=window.URL.createObjectURL(this.files[0]);
$("#photo").attr("src",window.fileurl);
});
})
</script>
</head>
<body>
<form id="form1">
姓名:<input name="username"><br/>
<input type="file" name="photo" style="display: none">
选择头像:<img id="photo" src="photo/upload.jpg" width="100px" height="100px"><br/>
<button type="button" id="submit">提交</button>
</form>
</body>
</html>
二:Servlet页面
@WebServlet(name = "MultipartServlet",urlPatterns = "/upload")
public class MultipartServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
request.setCharacterEncoding("utf-8");
Map<String,String> parameters =new HashMap<>();
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setSizeThreshold(1024*1024*10);
factory.setRepository(new File("upload"));
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setSizeMax(1024*1024*5);
try {
List<FileItem> list =upload.parseRequest(request);
for(FileItem fileItem:list){
if(fileItem.isFormField()){
String fileItemName = fileItem.getFieldName();
System.out.println(fileItemName);
String value = fileItem.getString("utf-8");
parameters.put(fileItemName,value);
}else{
String name = fileItem.getName();
String newFileName = generatorName(name);
String realPath = request.getSession().getServletContext().getRealPath("photo");
fileItem.write(new File(realPath,newFileName));
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write("1");
writer.close();
}
private String generatorName(String name) {
String extenName = name.substring(name.lastIndexOf("."));
return UUID.randomUUID()+extenName;
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}