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 相关文章推荐
Java Shutdown Hook场景使用及源码分析
Jun 15 Java/Android
springBoot基于webSocket实现扫码登录
Jun 22 Java/Android
总结Java对象被序列化的两种方法
Jun 30 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
SpringRetry重试框架的具体使用
Jul 25 Java/Android
剑指Offer之Java算法习题精讲二叉树的构造和遍历
Mar 21 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
Java设计模式之代理模式
Apr 22 Java/Android
Java 数组的使用
May 11 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 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 防恶意刷新实现代码
2010/05/16 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python实现partial改变方法默认参数
2014/08/18 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python 自动批量打开网页的示例
2019/02/21 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
介绍一下sql server的安全性
2014/08/10 面试题
LINUX下线程,GDI类的解释
2012/04/17 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
球队口号
2014/06/18 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
2014年妇女工作总结
2014/12/06 职场文书
销售员自我评价
2015/03/11 职场文书
2016新年致辞
2015/08/01 职场文书
干部考核工作总结
2015/08/12 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
浅析Python OpenCV三种滤镜效果
2022/04/11 Python