spring boot实现文件上传

 更新时间:2022年08月14日 14:20:24   作者:奶茶37.2℃  
这篇文章主要为大家详细介绍了spring boot实现文件上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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 。自动配置信息如下:

用户可自定义配置相关属性。

二、流程

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

2.选择文件并提交

3.使用 FileController 中请求获取文件信息

四、多文件上传

1.html form 的input 支持multiple 属性,加上该属性将可以上传多个文件

2.多文件上传的请求方法的MultipartFile 将是一个数组,遍历该数组保存相关文件信息即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java 知识难点之异常的认知与使用详解

    Java 知识难点之异常的认知与使用详解

    所谓异常是指程序在运行时出现错误时提示调用者的机制,异常的种类有很多,不同种类的异常有不同的含义,也有不同的处理方式,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • Java之String、StringBuffer、StringBuilder的区别分析

    Java之String、StringBuffer、StringBuilder的区别分析

    今天搞安卓在看书的时候遇到了StringBuilder这个类型的东东,有点小迷,不知道它跟string、stringbuffer的关系式怎么样的,赶快查阅相关资料,了解了个大概,拿出来分享一下
    2012-11-11
  • 2021年最新Redis面试题汇总(3)

    2021年最新Redis面试题汇总(3)

    在程序员面试过程中redis相关的知识是常被问到的话题。这篇文章主要介绍了几道Redis面试题,整理一下分享给大家,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • java实现文件重命名功能

    java实现文件重命名功能

    这篇文章主要介绍了java实现文件重命名功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • java实现点击按钮弹出新窗体功能

    java实现点击按钮弹出新窗体功能

    这篇文章主要为大家详细介绍了java实现点击按钮弹出新窗体功能,旧窗体不进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • 详解利用Spring加载Properties配置文件

    详解利用Spring加载Properties配置文件

    本篇文章主要介绍了详解利用Spring加载Properties配置文件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • java线程池ThreadPoolExecutor类使用小结

    java线程池ThreadPoolExecutor类使用小结

    这篇文章主要介绍了java线程池ThreadPoolExecutor类使用,本文主要对ThreadPoolExecutor的使用方法进行一个详细的概述,示例代码介绍了ThreadPoolExecutor的构造函数的相关知识,感兴趣的朋友一起看看吧
    2022-03-03
  • Java代码实现四种限流算法详细介绍

    Java代码实现四种限流算法详细介绍

    本文主要介绍了Java代码实现四种限流算法详细介绍,包含固定窗口限流,滑动窗口限流,漏桶限流,令牌桶限流,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • 使用Java计算集合中的组内平均值的代码实现

    使用Java计算集合中的组内平均值的代码实现

    在Java开发中,集合(Collection)是一个重要的数据结构,广泛应用于各种场景,计算集合中的组内平均值是一个常见的操作,本文将深入探讨如何使用Java来计算集合中的组内平均值,涵盖基本概念、具体实现、优化策略和实用示例,需要的朋友可以参考下
    2024-06-06
  • java实现的二级联动菜单效果

    java实现的二级联动菜单效果

    这篇文章主要介绍了java实现的二级联动菜单效果,结合实例形式分析了java前台页面布局及与后台交互构造联动菜单的相关技巧,需要的朋友可以参考下
    2016-08-08

最新评论