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 相关文章推荐
java Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
浅谈@Value和@Bean的执行顺序问题
Jun 16 Java/Android
Java Optional<Foo>转换成List<Bar>的实例方法
Jun 20 Java/Android
springBoot基于webSocket实现扫码登录
Jun 22 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
SpringBoot整合Mybatis Generator自动生成代码
Aug 23 Java/Android
logback如何自定义日志存储
Aug 30 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
Dubbo+zookeeper搭配分布式服务的过程详解
Apr 03 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
Java数组详细介绍及相关工具类
Apr 14 Java/Android
Java 多线程并发FutureTask
Jun 28 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
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
php时间计算相关问题小结
2016/05/09 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
代码生成器 document.write()
2007/04/15 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
Python requests获取网页常用方法解析
2020/02/20 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
2016十一国庆节感言
2015/12/09 职场文书
如何在Python项目中引入日志
2021/05/31 Python
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers