本文使用SpringBoot的版本爲2.0.3.RELEASEhtml
1.上傳單個文件spring
①html對應的提交表單app
<form action="uploadFile" method="post" enctype="multipart/form-data">
<p>選擇文件: <input type="file" name="fileName"/></p>
<p><input type="submit" value="提交"/></p>
</form>
②Boot中的處理代碼。這裏要注意post
@RequestMapping("/uploadFile") 對應 action="uploadFile"url
@RequestParam("fileName") 對應 name="fileName"spa
@RequestMapping("/uploadFile") @ResponseBody public String uploadFile(@RequestParam("fileName") MultipartFile file) { //判斷文件是否爲空
if (file.isEmpty()) { return "-1"; } String fileName = file.getOriginalFilename(); //加個時間戳,儘可能避免文件名稱重複
String path = "D:/" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + fileName; File dest = new File(path); //判斷文件是否已經存在
if (dest.exists()) { return "-2"; } //判斷文件父目錄是否存在
if (!dest.getParentFile().exists()) { dest.getParentFile().mkdir(); } try { file.transferTo(dest); //保存文件
} catch (IOException e) { return "-3"; } return "0"; }
2.上傳多個文件code
①html對應的提交表單orm
<form action="uploadMultifile" method="post" enctype="multipart/form-data" >
<p>選擇文件1: <input type="file" name="fileName"/></p>
<p>選擇文件2: <input type="file" name="fileName"/></p>
<p>選擇文件3: <input type="file" name="fileName"/></p>
<p><input type="submit" value="提交"/></p>
</form>
②Boot中的處理代碼。htm
@RequestMapping("/uploadMultifile") @ResponseBody public String keywordSubmitFile(@RequestParam("fileName") List<MultipartFile> files) { for (MultipartFile file : files) { //這裏簡單輸出文件名稱
System.out.println(file.getOriginalFilename()); } return "0"; }
3.下載文件blog
@RequestMapping("/downloadFile") @ResponseBody public String downloadFile(HttpServletResponse response, @RequestParam("fileName") String filePathName) { File file = new File(filePathName); if (!file.exists()) { return "-1"; } response.reset(); response.setHeader("Content-Disposition", "attachment;fileName=" + filePathName); try { InputStream inStream = new FileInputStream(filePathName); OutputStream os = response.getOutputStream(); byte[] buff = new byte[1024]; int len = -1; while ((len = inStream.read(buff)) > 0) { os.write(buff, 0, len); } os.flush(); os.close(); inStream.close(); } catch (Exception e) { e.printStackTrace(); return "-2"; } return "0"; }
4.設置上傳下載文件大小
①根據不一樣版本,對應的設置值不同
multipart.maxFileSize
multipart.maxRequestSize
spring.http.multipart.maxFileSize
spring.http.multipart.maxRequestSize
spring.servlet.multipart.maxFileSize
spring.servlet.multipart.maxRequestSize
②好比在2.x的版本,則在項目的application.properties文件中設置30MB大小
spring.servlet.multipart.maxFileSize=30MB spring.servlet.multipart.maxRequestSize=30MB
若是不限制大小,則設置爲-1便可
spring.servlet.multipart.maxFileSize=-1 spring.servlet.multipart.maxRequestSize=-1
參考:
《I am trying to set maxFileSize but it is not honored》
以上。