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实现分布式事务的三种方案
Jun 11 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
Jackson 反序列化时实现大小写不敏感设置
Jun 29 Java/Android
浅谈自定义校验注解ConstraintValidator
Jun 30 Java/Android
JavaWeb Servlet实现网页登录功能
Jul 04 Java/Android
详解Spring Security中的HttpBasic登录验证模式
Mar 17 Java/Android
Java字符缓冲流BufferedWriter
Apr 09 Java/Android
详解Flutter网络请求Dio库的使用及封装
Apr 14 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
Android学习之BottomSheetDialog组件的使用
Jun 21 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
Sep 23 Java/Android
Java结构型设计模式之组合模式详解
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 setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
javascript 图片裁剪技巧解读
2012/11/15 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python数据挖掘需要学的内容
2019/06/23 Python
Django模板Templates使用方法详解
2019/07/19 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
函授自我鉴定
2013/11/06 职场文书
公司同意接收函
2014/01/13 职场文书
自荐信需注意事项
2014/01/25 职场文书
网络教育自我鉴定
2014/02/04 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
求职自荐信的格式
2014/04/07 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
领导离职感言
2015/08/03 职场文书
《花钟》教学反思
2016/02/17 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
解除合同协议书范本
2016/03/21 职场文书
小程序自定义轮播图圆点组件
2022/06/25 Javascript