• SpringBoot下文件上传与下载的实现


    SpringBoot后台如何实现文件上传下载?

    最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的使用方法还在研究中,日后整理再记录。本文主要介绍SpringBoot后台对文件上传与下载的处理。

    单文件上传

    // 单文件上传
    @RequestMapping(value = "/upload")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file) {
        try {
        if (file.isEmpty()) {
            return "文件为空";
        }
        // 获取文件名
        String fileName = file.getOriginalFilename();
        logger.info("上传的文件名为:" + fileName);
        // 获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        logger.info("文件的后缀名为:" + suffixName);
    
        // 设置文件存储路径
        String filePath = "D://aim//";
        String path = filePath + fileName + suffixName;
    
        File dest = new File(path);
        // 检测是否存在目录
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();// 新建文件夹
        }
        file.transferTo(dest);// 文件写入
        return "上传成功";
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "上传失败";
    }
    

    MultipartConfig配置

    可以通过MultipartConfig配置类对文件上传进行全局控制。

    @Configuration
    public class MultipartConfig {
    
        @Bean
        public MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            // 置文件大小限制 ,超出此大小页面会抛出异常信息
            factory.setMaxFileSize("2MB"); //KB,MB
            // 设置总上传数据总大小
            factory.setMaxRequestSize("20MB");
            // 设置文件临时文件夹路径
            // factory.setLocation("E://test//");
            // 如果文件大于这个值,将以文件的形式存储,如果小于这个值文件将存储在内存中,默认为0
            // factory.setMaxRequestSize(0);
            return factory.createMultipartConfig();
        }
    }

    注意事项

    前后端文件传输格式应为 multipart/form-data

    一个Java交流平台分享给你们,让你在实践中积累经验掌握原理。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java学习交流群:642830685

    注:加群要求

    1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作

    2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的

    3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造

    4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的

    5、有一定的C语言基础,接触过java开发,想转行的

  • 相关阅读:
    【转】请收下这72个炫酷的CSS技巧
    【转】css套路学习(一)
    【转】用最短的CSS样式,勾勒大数据演示屏
    【转】CSS 实现按钮点击动效的套路
    Docker Redis分布式存储
    Dockerfile的使用以及docker部署java项目
    centos7安装Docker详细步骤(无坑版教程)
    mysql三种备份方式
    CentOS7升级OpenSSL版本 前置机Linux安装Nginx
    go的nil值/零值/空值
  • 原文地址:https://www.cnblogs.com/feiyudemeng/p/8392767.html
Copyright © 2020-2023  润新知