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 相关文章推荐
ConstraintValidator类如何实现自定义注解校验前端传参
Jun 18 Java/Android
详解Java实践之建造者模式
Jun 18 Java/Android
Log4j.properties配置及其使用
Aug 02 Java/Android
Java实现给Word文件添加文字水印
Feb 15 Java/Android
java executor包参数处理功能 
Feb 15 Java/Android
alibaba seata服务端具体实现
Feb 24 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
Mar 21 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
Android在Sqlite3中的应用及多线程使用数据库的建议
Apr 24 Java/Android
Jmerte 分布式压测及分布式压测配置
Apr 30 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 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连接函数implode与分割explode的深入解析
2013/06/26 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
JS 自定义带默认值的函数
2011/07/21 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python中six模块基础用法
2019/12/08 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
详细分析Python collections工具库
2020/07/16 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
物理力学求职信
2014/02/18 职场文书
《学会待客》教学反思
2014/02/22 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
千与千寻观后感
2015/06/04 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
图书借阅制度范本
2015/08/06 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js