zoukankan      html  css  js  c++  java
  • 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

    以上。

     
  • 相关阅读:
    Python学习(五)函数 —— 自定义函数
    Python学习(四)数据结构 —— dict
    Python学习(四)数据结构 —— set frozenset
    C++ —— 构建开源的开发环境
    Oracle 数据库 Database Express Edition 11g Release 2 (11.2) 错误解决集锦(使用语法)
    Web —— tomcat 问题解决
    web —— jsp笔记
    Web 前端 —— javaScript
    编程杂谈—— 浮点数
    Web —— java web 项目开发 笔记
  • 原文地址:https://www.cnblogs.com/chevin/p/9260842.html
Copyright © 2011-2022 走看看