SpringBoot 文件上传、下载、设置大小


本文使用SpringBoot的版本为2.0.3.RELEASE

 

1.上传单个文件

①html对应的提交表单

 <form action="uploadFile" method="post" enctype="multipart/form-data">
        <p>选择文件: <input type="file" name="fileName"/></p>
        <p><input type="submit" value="提交"/></p>
 </form>

 

②Boot中的处理代码。这里要注意

@RequestMapping("/uploadFile")  对应 action="uploadFile"

@RequestParam("fileName") 对应 name="fileName"

    @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.上传多个文件

①html对应的提交表单

    <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中的处理代码。

    @RequestMapping("/uploadMultifile") @ResponseBody public String keywordSubmitFile(@RequestParam("fileName") List<MultipartFile> files) { for (MultipartFile file : files) { //这里简单输出文件名称
 System.out.println(file.getOriginalFilename()); } return "0"; }

 

3.下载文件

@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.设置上传下载文件大小

①根据不同版本,对应的设置值不一样

Spring Boot 1.3.x and earlier

  • multipart.maxFileSize
  • multipart.maxRequestSize

Spring Boot 1.4.x and 1.5.x

  • spring.http.multipart.maxFileSize
  • spring.http.multipart.maxRequestSize

Spring Boot 2.x

  • 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

 

参考:

Spring Boot入门——文件上传与下载

I am trying to set maxFileSize but it is not honored

 

以上。

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM