spring boot实现文件上传


Posted in Java/Android onAugust 14, 2022

本文实例为大家分享了spring boot实现文件上传的具体代码,供大家参考,具体内容如下

一、简介

java 中文件上传涉及CommonsMultipartResolver 和 StandardServletMultipartResolver,其中CommonsMultipartResolver需要 commons-fileupload jar 包。StandardServletMultipartResolver 基于Servlet3.0 将不再需要任何额外的jar 包,tomcat 7.0 开始支持Servlet3.0。spring boot 2.0.4 内嵌的tomcat 为8.5.32 。自动配置信息如下:

spring boot实现文件上传

用户可自定义配置相关属性。

二、流程

1.FileController.java

package com.vincent;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.UUID;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController 
@RequestMapping("/file")
public class FileController {
    @PostMapping("/upload")
    public String upload(MultipartFile multipartFile) {
        
        String base = "C:\\Users\\Administrator\\Desktop\\file\\";
        File file = new File(base);
        if(!file.exists()) {
            file.mkdirs();
        }
        
        //获取文件类型名
        String[] parts = multipartFile.getOriginalFilename().split("\\.");
        String fileName = UUID.randomUUID().toString();
        
        if(parts!= null && parts.length >= 2) {
            fileName += "." + parts[parts.length-1];
        }
        try {
            multipartFile.transferTo(new File(base + fileName));
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();
            return "文件上传失败";
        }
        
        return fileName;
    }
    
    @GetMapping("/path")
    public void file(String fileName,HttpServletResponse response) throws IOException {
        
        String base = "C:\\Users\\Administrator\\Desktop\\file\\";
        
        byte[] bytes = Files.readAllBytes(Paths.get(base, fileName));
        response.getOutputStream().write(bytes);
        
    }
    
}

2.resources/static/html/index.html

<html>
    <head>
        <meta charset="utf-8" >
    </head>
    <body>
        <form action="/file/upload" method="post" enctype="multipart/form-data">
            <input type="file" name="multipartFile"><br/>
            <input type="submit" value="提交" /> 
        </form>
    </body>
</html>

三、测试

1.访问 http://localhost:8080/html/index.html

spring boot实现文件上传

2.选择文件并提交

spring boot实现文件上传

3.使用 FileController 中请求获取文件信息

spring boot实现文件上传

四、多文件上传

1.html form 的input 支持multiple 属性,加上该属性将可以上传多个文件

2.多文件上传的请求方法的MultipartFile 将是一个数组,遍历该数组保存相关文件信息即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
springboot利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
Java框架入门之简单介绍SpringBoot框架
Jun 18 Java/Android
Java数据结构之链表相关知识总结
Jun 18 Java/Android
java设计模式--七大原则详解
Jul 21 Java/Android
JVM钩子函数的使用场景详解
Aug 23 Java/Android
MyBatis自定义SQL拦截器示例详解
Oct 24 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
Apr 19 Java/Android
带你了解Java中的ForkJoin
Apr 28 Java/Android
Java8 CompletableFuture 异步回调
Apr 28 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
基于Android10渲染Surface的创建过程
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
基于Android10渲染Surface的创建过程
Aug 14 #Java/Android
OpenFeign实现远程调用
Aug 14 #Java/Android
httpclient调用远程接口的方法
Aug 14 #Java/Android
You might like
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
PHP如何实现跨域
2016/05/30 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
详解获取jq ul第一个li定位的四种解决方案
2016/11/23 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
js实现日历
2020/11/07 Javascript
python输出指定月份日历的方法
2015/04/23 Python
Python中的choice()方法使用详解
2015/05/15 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
解析python的局部变量和全局变量
2019/08/15 Python
python中time库的实例使用方法
2019/10/31 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
情人节活动总结范文
2015/02/05 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
2016年元旦致辞
2015/08/01 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
JavaScript函数柯里化
2021/11/07 Javascript