页面内容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>单文件上传</title> </head> <body> <h3>单文件上传</h3> <form method="post" action="/file/upload" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="提交"> </form> <h3>多文件上传</h3> <form method="post" action="/file/uploads" enctype="multipart/form-data"> <input type="file" multiple name="file"> <input type="submit" value="上传"> </form> </body> </html>
=========================================================================
后台逻辑
package com.cn.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.util.List; import java.util.UUID; @Controller @RequestMapping("/file/") public class FileController { /*单文件上传*/ @RequestMapping("upload") @ResponseBody public String upload(@RequestParam("file")MultipartFile file){ //获取原始名字 String fileName = file.getOriginalFilename(); //获取后缀名 String suffixName = fileName.substring(fileName.lastIndexOf(".")); //文件保存路径 String filePath = "d:/file/"; //文件重命名,防止重复 fileName = filePath+ UUID.randomUUID() + fileName; //文件对象 File dest = new File(fileName); //判断路径是否存在,不存时创建 if(!dest.getParentFile().exists()){ dest.getParentFile().mkdir(); } try { //将文件保存到服务器 file.transferTo(dest); System.out.println("================"); return "上传成功"; }catch (Exception e){ e.printStackTrace(); } return"上传失败"; } @RequestMapping("/uploads") @ResponseBody public String handleFileUpload(HttpServletRequest request){ List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("file"); MultipartFile file = null; for(int i = 0;i < files.size();i++){ file = files.get(i); if(!file.isEmpty()){ try { //获取原始名字 String fileName = file.getOriginalFilename(); //文件保存路径 String filePath = "d:/file/"; //防止文件重命名 fileName = filePath + UUID.randomUUID()+fileName; //文件对象 File dest = new File(fileName); //保存到服务器 file.transferTo(dest); }catch (Exception e){ e.printStackTrace(); return"上传失败"; } }else{ return"上传失败"; } } return"上传成功"; } @RequestMapping("/download") public void download(HttpServletResponse response) throws Exception{ //文件地址 String fileName = "a.txt"; String filePath = "D:/file"; File file = new File(filePath+"/"+fileName); //创建输入对象 FileInputStream fis = new FileInputStream(file); //设置相关格式 response.setContentType("application/force-download"); //设置下载后的文件名及handler response.setHeader("Content-Disposition","attachement;fileName =" + fileName); //创建输出对象 OutputStream os = response.getOutputStream(); //常规操作 byte[]buf = new byte[1024]; int len = 0; while ((len = fis.read(buf)) != -1){ os.write(buf,0,len); } fis.close(); } }