参考了网上的代码,记录下来。
参考
Java Servlet3.0使用getPart/getParts实现单文件和多文件上传
Part类的官方文档
单文件上传
选择文件 点击上传 参数名为 file,用于后端获取
html
<div>
<input type="file" id="file" value="文件上传"/>
</div>
<div>
<button type="button" id="upload">Upload</button>
</div>
js
单文件上传
var uploadFile;
$(function() {
$('#file').on('change', function() {
var files = this.files;
if (files.length == 0) {
return;
}
uploadFile = files[0];
});
$('#upload').on('click', function() {
var formData = new FormData();
formData.append("file", uploadFile); // 后端通过 'file' 获取
$.ajax({
url: 'http://localhost/Test/upload',
data: formData,
type: "post",
processData: false, //必须false才会避开jQuery对 formdata 的默认处理 XMLHttpRequest会对 formdata 进行正确的处理
contentType: false, //必须false才会自动加上正确的Content-Type
success: function(result) {
console.log(result);
}
});
});
});
Java
@MultipartConfig 这个注解必须加上
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class UploadFileServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException