前端
<form id="form"> <img src="" id="img"> <input type="file" id="file" name="file"> <br> 账号:<input type="text" name="account"> <br> 密码:<input type="text" name="password"> <br> </form> <button οnclick="sendFile()">ajaxFile</button>
function sendFile(){ //将form的数据放入formData中 let formData = new FormData($("#form")[0]) $.ajax({ url:'file', method:"post", data:formData, // 告诉jQuery不要去处理发送的数据,用于对data参数进行序列化处理 这里必须false processData : false, // 告诉jQuery不要去设置Content-Type请求头 contentType : false, }) }
后台
public class FileUtil { // 上传文件存储目录 private static final String UPLOAD_DIRECTORY = "D:/upload/"; // 上传配置 private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB public static Map fileUpload(HttpServletRequest req, HttpServletResponse resp) throws IOException { // 检测是否为多媒体上传 if (!ServletFileUpload.isMultipartContent(req)) { // 如果不是则停止 PrintWriter writer = resp.getWriter(); writer.println("Error: 表单必须包含 enctype=multipart/form-data"); writer.flush(); return null; } // 配置上传参数 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); // 设置最大文件上传值 upload.setFileSizeMax(MAX_FILE_SIZE); // 设置最大请求值 (包含文件和表单数据) upload.setSizeMax(MAX_REQUEST_SIZE); // 中文处理 upload.setHeaderEncoding("UTF-8"); // 构造临时路径来存储上传的文件 // 这个路径相对当前应用的目录 String uploadPath = UPLOAD_DIRECTORY; // 如果目录不存在则创建 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } Map map = new HashMap(); try { // 解析请求的内容提取文件数据 @SuppressWarnings("unchecked") List<FileItem> formItems = upload.parseRequest(req); if (formItems != null && formItems.size() > 0) { // 迭代表单数据 for (FileItem item : formItems) { // 处理不在表单中的字段 if (!item.isFormField()) { String name = new File(item.getName()).getName(); String fileName = UUID.randomUUID()+name.substring(name.lastIndexOf(".")); String filePath = uploadPath + fileName; File storeFile = new File(filePath); // 在控制台输出文件的上传路径 System.out.println(filePath); // 保存文件到硬盘 item.write(storeFile); map.put("fileUrl",fileName); }else{ String key = item.getFieldName(); String value = item.getString("utf-8"); map.put(key,value); } } } return map; } catch (Exception ex) { throw new RuntimeException(ex.getMessage()); } } }