注意:该功能是基于maven工程的基础之上
单文件上传
@RequestMapping(value = "/testUploadFile", method = RequestMethod.POST) public void testUploadFile(HttpServletRequest req, MultipartHttpServletRequest multiReq) { // 获取上传文件的路径 String uploadFilePath = multiReq.getFile("file1").getOriginalFilename(); System.out.println("uploadFlePath:" + uploadFilePath); // 截取上传文件的文件名 String uploadFileName = uploadFilePath.substring( uploadFilePath.lastIndexOf('\\') + 1, uploadFilePath.indexOf('.')); System.out.println("multiReq.getFile()" + uploadFileName); // 截取上传文件的后缀 String uploadFileSuffix = uploadFilePath.substring( uploadFilePath.indexOf('.') + 1, uploadFilePath.length()); System.out.println("uploadFileSuffix:" + uploadFileSuffix); FileOutputStream fos = null; FileInputStream fis = null; try { fis = (FileInputStream) multiReq.getFile("file1").getInputStream(); fos = new FileOutputStream(new File(".//uploadFiles//" + uploadFileName + ".") + uploadFileSuffix); byte[] temp = new byte[1024]; int i = fis.read(temp); while (i != -1){ fos.write(temp,0,temp.length); fos.flush(); i = fis.read(temp); } } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } |
多文件上传服务端代码
@RequestMapping(value = "testUploadFiles", method = RequestMethod.POST) @ResponseBody public void handleFileUpload(HttpServletRequest request) { List<MultipartFile> files = ((MultipartHttpServletRequest) request) .getFiles("file"); MultipartFile file = null; BufferedOutputStream stream = null; for (int i = 0; i < files.size(); ++i) { file = files.get(i); if (!file.isEmpty()) { try { String uploadFilePath = file.getOriginalFilename(); System.out.println("uploadFlePath:" + uploadFilePath); // 截取上传文件的文件名 String uploadFileName = uploadFilePath .substring(uploadFilePath.lastIndexOf('\\') + 1, uploadFilePath.indexOf('.')); System.out.println("multiReq.getFile()" + uploadFileName); // 截取上传文件的后缀 String uploadFileSuffix = uploadFilePath.substring( uploadFilePath.indexOf('.') + 1, uploadFilePath.length()); System.out.println("uploadFileSuffix:" + uploadFileSuffix); stream = new BufferedOutputStream(new FileOutputStream(new File( ".//uploadFiles//" + uploadFileName + "." + uploadFileSuffix))); byte[] bytes = file.getBytes(); stream.write(bytes,0,bytes.length); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stream != null) { stream.close(); } } catch (IOException e) { e.printStackTrace(); } } } else { System.out.println("上传文件为空"); } } System.out.println("文件接受成功了"); } |
文件上传下载配置类
@Configurationpublic class MultipartConfig { @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); // 置文件大小限制 ,超出此大小页面会抛出异常信息 factory.setMaxFileSize("2MB"); //KB,MB // 设置总上传数据总大小 factory.setMaxRequestSize("20MB"); // 设置文件临时文件夹路径 // factory.setLocation("E://test//"); // 如果文件大于这个值,将以文件的形式存储,如果小于这个值文件将存储在内存中,默认为0 // factory.setMaxRequestSize(0); return factory.createMultipartConfig(); }} |
文件下载服务端
@RequestMapping(value = "/testDownload", method = RequestMethod.GET) public void testDownload(HttpServletResponse res) { String fileName = "upload.jpg"; res.setHeader("content-type", "application/octet-stream"); res.setContentType("application/octet-stream"); res.setHeader("Content-Disposition", "attachment;filename=" + fileName); byte[] buff = new byte[1024]; BufferedInputStream bis = null; OutputStream os = null; try { os = res.getOutputStream(); bis = new BufferedInputStream(new FileInputStream(new File("d://" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff, 0, buff.length); os.flush(); i = bis.read(buff); } } catch (IOException e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("success"); } } |
文件上传下载页面
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form action="http://localhost:8080/testUploadFile" method="POST" enctype="multipart/form-data"> <p>单文件上传:</><br/> <input type="file" name="file1"/> <input type="submit" value = "上传"/> </form> <form method="POST" enctype="multipart/form-data" action="http://localhost:8080/testUploadFiles"> <p>多文件上传:</> <p>文件1:<input type="file" name="file" /></p> <p>文件2:<input type="file" name="file" /></p> <p><input type="submit" value="上传" /></p> </form> <a href="http://localhost:8080/testDownload">下载</a> </body> </html> |