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 相关文章推荐
为什么在foreach循环中JAVA集合不能添加或删除元素
Jun 11 Java/Android
SpringBoot项目中控制台日志的保存配置操作
Jun 18 Java/Android
Java循环队列与非循环队列的区别总结
Jun 22 Java/Android
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
Java网络编程之UDP实现原理解析
Sep 04 Java/Android
Java异常处理try catch的基本用法
Dec 06 Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Android开发 使用文件储存的方式保存QQ密码
Apr 24 Java/Android
Java线程的6种状态与生命周期
May 11 Java/Android
spring IOC容器的Bean管理XML自动装配过程
May 30 Java/Android
java实现web实时消息推送的七种方案
Jul 23 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代码审计比较有意思的例子
2014/05/07 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
jQuery的学习步骤
2011/02/23 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python复制目录结构脚本代码分享
2015/03/06 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
python实现web方式logview的方法
2015/08/10 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
python实现用户名密码校验
2020/03/18 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
python sleep和wait对比总结
2021/02/03 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
static关键字的用法
2013/10/07 面试题
怎样从/向数据文件读/写结构
2014/11/23 面试题
Linux的文件类型
2016/07/05 面试题
车贷收入证明范本
2014/01/09 职场文书
2015年保安个人工作总结
2015/04/02 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript