Spring boot实现上传文件到本地服务器


Posted in Java/Android onAugust 14, 2022

本文实例为大家分享了Spring boot实现上传文件到本地服务器的具体代码,供大家参考,具体内容如下

引入配置

UploadFileConfig类

@Configuration
public class UploadFileConfig {
       @Value("${file.uploadFolder}")
        private String uploadFolder;
 
        @Bean
        MultipartConfigElement multipartConfigElement() {
            MultipartConfigFactory factory = new MultipartConfigFactory();
            factory.setLocation(uploadFolder);
            //文件最大
            factory.setMaxFileSize("20MB");
            return factory.createMultipartConfig();
        }
}

UploadFilePathConfig类

@Configuration
public class UploadFilePathConfig extends WebMvcConfigurerAdapter {
    @Value("${file.staticAccessPath}")
    private String staticAccessPath;
    @Value("${file.uploadFolder}")
    private String uploadFolder;
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
    }
}

在application.properties加上传的配置项

#文件服务本地rest请求对外地址
file.staticAccessPath=/upload/**
#文件上传目录(注意Linux和Windows上目录结构不同)需要改成你自己的实际目录
file.uploadFolder=/Users/leichunhong/Documents/hlp/zx/
#上传文件本地域名 改写成你后端服务的地址和端口
file.upload.nama=http://127.0.0.1:9090
#springBOOt上传文件大小
# 单个文件的最大值
spring.servlet.multipart.max-file-size = 10MB
# 上传文件总的最大值
spring.servlet.multipart.max-request-size=100MB

编写上传controller

@RestController
@RequestMapping("/test")
public class UploadController {
 
    @Value("${file.uploadFolder}")
    private String uploadFolder;
 
    @Value("${file.staticAccessPath}")
    private String staticAccessPath;
 
    @Value("${file.upload.nama}")
    private String reurl;
 
    @RequestMapping(value = "/upload", method = {RequestMethod.POST, RequestMethod.GET})
    public List<String> upload(HttpServletRequest request) throws MultipartException {
        String path = "";
        List<String> ksfs = new ArrayList<>();
        //1 需传imgUrl 其他值就是传file文件上传
        try {
            //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
                    request.getSession().getServletContext());
 
            //检查form中是否有enctype="multipart/form-data"
            if (multipartResolver.isMultipart(request)) {
                //将request变成多部分request
                MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
                //获取multiRequest 中所有的文件名
                Iterator<String> iter = multiRequest.getFileNames();
 
                while (iter.hasNext()) {
                    //多个文件上传
                    List<MultipartFile> fileList = multiRequest.getFiles(iter.next());
                    for (MultipartFile multipartFile : fileList) {
                        String realPath = uploadFolder;
                        String trueFileName = System.currentTimeMillis() + "." + FilenameUtils.getExtension(multipartFile.getOriginalFilename());
                        // 设置存放图片文件的路径
                        path = realPath + trueFileName;
                        File file = new File(path);
                        multipartFile.transferTo(file);
                        path = reurl + "/upload/" + trueFileName;
                        ksfs.add(path);
                    }
                    //单个文件
                       /* MultipartFile multipartFile=multiRequest.getFile(iter.next().toString());
                        if (multipartFile != null) {
                            excelFile = File.createTempFile(prefix, ".jpg");
                            multipartFile.transferTo(excelFile);
                            path = KSFileSave.uploadFile(prefix, excelFile, "jpg");
                            ksfs.add(path);
                       }*/
 
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }
        return ksfs;
    }
 
}

调用接口测试,用如下的html页面

<form method="POST" enctype="multipart/form-data" action="http:127.0.0.1:9090/test/upload">
        <table>
            <tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr>
            <tr><td></td><td><input type="submit" value="Upload" /></td></tr>
        </table>
</form>

Spring boot实现上传文件到本地服务器

点击选择文件上传验证返回结果

Spring boot实现上传文件到本地服务器

查看上传目录

Spring boot实现上传文件到本地服务器

点击返回接口访问

Spring boot实现上传文件到本地服务器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
详解Java实现数据结构之并查集
Jun 23 Java/Android
Feign调用全局异常处理解决方案
Jun 24 Java/Android
Java实现多文件上传功能
Jun 30 Java/Android
新手初学Java List 接口
Jul 07 Java/Android
java解析XML详解
Jul 09 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
Jun 16 Java/Android
Spring boot实现上传文件到本地服务器
Aug 14 Java/Android
Spring Boot实现文件上传下载
Aug 14 #Java/Android
Springboot集成kafka高级应用实战分享
spring boot实现文件上传
Aug 14 #Java/Android
Java使用HttpClient实现文件下载
Aug 14 #Java/Android
HttpClient实现表单提交上传文件
Aug 14 #Java/Android
HttpClient实现文件上传功能
Aug 14 #Java/Android
SpringBoot Http远程调用的方法
Aug 14 #Java/Android
You might like
php 中的4种标记风格介绍
2012/05/10 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php日历制作代码分享
2014/01/20 PHP
php反射应用示例
2014/02/25 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
Python是编译运行的验证方法
2015/01/30 Python
Python中decorator使用实例
2015/04/14 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
基于Python闭包及其作用域详解
2017/08/28 Python
python实现微信自动回复功能
2018/04/11 Python
Python imread、newaxis用法详解
2019/11/04 Python
Python龙贝格法求积分实例
2020/02/29 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
Allsole美国/加拿大:英国一家专门出售品牌鞋子的网站
2018/10/21 全球购物
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
文明村创建实施方案
2014/03/27 职场文书
求职教师自荐书
2014/06/19 职场文书
天猫活动策划方案
2014/08/21 职场文书