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 相关文章推荐
如何给HttpServletRequest增加消息头
Jun 30 Java/Android
关于springboot 配置date字段返回时间戳的问题
Jul 25 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
Java实现学生管理系统(IO版)
Feb 24 Java/Android
Java生成日期时间存入Mysql数据库的实现方法
Mar 03 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
Apr 13 Java/Android
Java数组详细介绍及相关工具类
Apr 14 Java/Android
Java后端 Dubbo retries 超时重试机制的解决方案
Apr 14 Java/Android
Java版 简易五子棋小游戏
May 04 Java/Android
Spring中的@Transactional的工作原理
Jun 05 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
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
Nginx实现反向代理
2017/09/20 Servers
javascript动画效果类封装代码
2007/08/28 Javascript
动态表格Table类的实现
2009/08/26 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
JSONP之我见
2015/03/24 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
Node.js简单入门前传
2017/08/21 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
Python实现获取命令行输出结果的方法
2017/06/10 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
美国性感内衣店:Yandy
2018/06/12 全球购物
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
签约仪式主持词
2014/03/19 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
个人党性锻炼总结
2015/03/05 职场文书
校运会加油稿大全
2015/07/22 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python