zoukankan      html  css  js  c++  java
  • 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开发,想转行的

  • 相关阅读:
    java 传入多个参数时报"Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1,..." 解决方案
    java 判断int类型为空
    scp 传输下载
    自己开发的网页在跳转至微信公众号文章后,点击微信的返回,无法返回原网页
    nginx下Thinkphp 隐藏index.php
    ubuntu常见错误–Could not get lock /var/lib/dpkg/lock解决
    apt-get update 和 upgrade 的区别
    php 取某一日期的前一天
    PHP 统计数组中所有的值出现的次数 array_count_values 函数
    pandas之表格样式
  • 原文地址:https://www.cnblogs.com/feiyudemeng/p/8392767.html
Copyright © 2011-2022 走看看