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如何实现树的同构?
Jun 22 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
dubbo服务整合zipkin详解
Jul 26 Java/Android
浅谈sql_@SelectProvider及使用注意说明
Aug 04 Java/Android
springboot新建项目pom.xml文件第一行报错的解决
Jan 18 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
java高级用法JNA强大的Memory和Pointer
Apr 19 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
Java结构型设计模式之组合模式详解
Sep 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
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
用于table内容排序
2006/07/21 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
详解python while 函数及while和for的区别
2018/09/07 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
介绍一下JNDI的基本概念
2013/07/26 面试题
安全教育月活动总结
2014/05/05 职场文书
单位实习鉴定评语
2015/01/04 职场文书
优秀英文求职信范文
2015/03/19 职场文书
学生会部长竞选稿
2015/11/19 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS