网友回复
Hmll表单上传文件
控制器
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.COOKIE; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.net.http.HttpResponse; import java.util.List; @Controller public class HelloController { @GetMapping("/multiUpload") public String multiUpload() { return "multiUpload"; } @PostMapping("/multiUpload") @ResponseBody public String multiUpload(HttpServletRequest request) { List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("file"); String filePath = "D:/"; for (int i = 0; i < files.size(); i++) { MultipartFile file = files.get(i); if (file.isEmpty()) { return "上传第" + (i++) + "个文件失败"; } String fileName = file.getOriginalFilename(); String filenewName = filePath + fileName; File dest = new File(filenewName); try { file.transferTo(dest); } catch (IOException e) { return "上传第" + (i++) + "个文件失败"; } } return "上传成功"; } }2、在template2下的multiUpload.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Title</title> </head> <body> <form method="post" action="/multiUpload" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="submit" value="提交"> </form> </body> </html>下载文件
@RequestMapping("/downloadLocal") public void downloadLocal(String path, HttpServletResponse response) throws IOException { // 读到流中 InputStream inputStream = new FileInputStream(path);// 文件的存放路径 response.reset(); response.setContentType("application/octet-stream"); String filename = new File(path).getName(); response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8")); ServletOutputStream outputStream = response.getOutputStream(); byte[] b = new byte[1024]; int len; //从输入流中读取一定数量的字节,并将其存储在缓冲区字节数组中,读到末尾返回-1 while ((len = inputStream.read(b)) > 0) { outputStream.write(b, 0, len); } inputStream.close(); }