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 相关文章推荐
Spring Data JPA使用JPQL与原生SQL进行查询的操作
Jun 15 Java/Android
java Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
Java 中的 Unsafe 魔法类的作用大全
Jun 26 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
Jun 29 Java/Android
idea 在springboot中使用lombok插件的方法
Aug 02 Java/Android
聊聊Lombok中的@Builder注解使用教程
Nov 17 Java/Android
SpringBoot整合Minio文件存储
Apr 03 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
Java8利用Stream对列表进行去除重复的方法详解
Apr 14 Java/Android
Spring Data JPA框架Repository自定义实现
Apr 28 Java/Android
spring 项目实现限流方法示例
Jul 15 Java/Android
前端与RabbitMQ实时消息推送未读消息小红点实现示例
Jul 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模板之Phpbean的目录结构
2008/01/10 PHP
轻松修复Discuz!数据库
2008/05/03 PHP
php 数组二分法查找函数代码
2010/02/16 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
使用js判断数组中是否包含某一元素(类似于php中的in_array())
2013/12/12 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
Python 画出来六维图
2019/07/26 Python
python怎么提高计算速度
2020/06/11 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
什么是.net的Remoting技术
2016/07/08 面试题
服务员岗位责任制
2014/02/11 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
高老头读书笔记
2015/06/30 职场文书
生活小常识广播稿
2015/08/19 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
Nginx进程管理和重载原理详解
2021/04/22 Servers
利用js实现简单开关灯代码
2021/11/23 Javascript
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript