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 相关文章推荐
SpringCloud Alibaba 基本开发框架搭建过程
Jun 13 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
Java基于字符界面的简易收银台
Jun 26 Java/Android
解决SpringBoot跨域的三种方式
Jun 26 Java/Android
深入理解java.lang.String类的不可变性
Jun 27 Java/Android
实体类或对象序列化时,忽略为空属性的操作
Jun 30 Java/Android
spring cloud 配置中心native配置方式
Sep 25 Java/Android
Java异常处理try catch的基本用法
Dec 06 Java/Android
Java9新特性之Module模块化编程示例演绎
Mar 16 Java/Android
SpringBoot2零基础到精通之数据库专项精讲
Mar 22 Java/Android
springboot读取resources下文件的方式详解
Jun 21 Java/Android
Android移动应用开发指南之六种布局详解
Sep 23 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之第一天
2006/10/09 PHP
PHP 使用pcntl和libevent 实现Timer功能
2013/10/27 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
PHP解决中文乱码
2017/04/28 PHP
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
详解Vue CLI3配置之filenameHashing使用和源码设计使用和源码设计
2018/08/31 Javascript
vue-cli的工程模板与构建工具详解
2018/09/27 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
Python字符转换
2008/09/06 Python
Python中的魔法方法深入理解
2014/07/09 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
学python最电脑配置有要求么
2020/07/05 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
CK美国官网:Calvin Klein
2016/08/26 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
视图的作用
2014/12/19 面试题
低碳环保倡议书
2014/04/14 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
催款函范文
2015/06/24 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android