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
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
Java基础之this关键字的使用
Jun 30 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
Spring Security中用JWT退出登录时遇到的坑
Oct 16 Java/Android
Java实现学生管理系统(IO版)
Feb 24 Java/Android
JAVA 线程池(池化技术)的实现原理
Apr 28 Java/Android
Android Studio实现简易进制转换计算器
May 20 Java/Android
Java实现添加条码或二维码到Word文档
Jun 01 Java/Android
Android基础入门之dataBinding的简单使用教程
Jun 21 Java/Android
Spring boot admin 服务监控利器详解
Aug 05 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
JavaScript中window、doucment、body的解释
2013/08/14 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
Python中多线程的创建及基本调用方法
2016/07/08 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
浅谈Python中的字符串
2020/06/10 Python
python和js交互调用的方法
2020/06/23 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
秋季运动会广播稿大全
2014/02/17 职场文书
总经理任命书
2014/03/29 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
行政监察建议书
2014/05/19 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
户外亲子活动总结
2015/05/08 职场文书
小学生家长意见
2015/06/03 职场文书
新闻稿怎么写
2015/07/18 职场文书
高中生综合素质评价范文
2015/08/18 职场文书