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 相关文章推荐
源码解读Spring-Integration执行过程
Jun 11 Java/Android
Java新手教程之ArrayList的基本使用
Jun 20 Java/Android
分析设计模式之模板方法Java实现
Jun 23 Java/Android
Spring boot应用启动后首次访问很慢的解决方案
Jun 23 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
浅谈Python魔法方法
Jun 28 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
Java org.w3c.dom.Document 类方法引用报错
Aug 07 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
Aug 23 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
Javascript中replace()小结
2015/09/30 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
微型企业创业投资计划书
2014/01/10 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
法学专业求职信范文
2015/03/19 职场文书
爱的教育读书笔记
2015/06/26 职场文书
2015初中团委工作总结
2015/07/28 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
python Tkinter模块使用方法详解
2022/04/07 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技