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用自带的Image IO给图片添加水印
Jun 15 Java/Android
java固定大小队列的几种实现方式详解
Jul 15 Java/Android
SpringMVC 整合SSM框架详解
Aug 30 Java/Android
spring cloud 配置中心客户端启动遇到的问题
Sep 25 Java/Android
springboot如何接收application/x-www-form-urlencoded类型的请求
Nov 02 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
Java生成日期时间存入Mysql数据库的实现方法
Mar 03 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
Apr 20 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
SpringBoot深入分析讲解监听器模式下
Jul 15 Java/Android
app场景下uniapp的扫码记录
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中JSON的使用方法
2015/04/30 PHP
php+mysql实现无限级分类
2015/11/11 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
作为PHP程序员你要知道的另外一种日志
2018/07/30 PHP
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
python实现数通设备端口监控示例
2014/04/02 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Python continue继续循环用法总结
2018/06/10 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
小加工厂管理制度
2014/01/21 职场文书
运动会解说词200字
2014/02/06 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
草房子读书笔记
2015/06/29 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python