千家信息网

如何使用Java SpringBoot实现文件上传功能

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,小编给大家分享一下如何使用Java SpringBoot实现文件上传功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!测试代码pom.xml:
千家信息网最后更新 2025年01月16日如何使用Java SpringBoot实现文件上传功能

小编给大家分享一下如何使用Java SpringBoot实现文件上传功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

测试代码

pom.xml:

    4.0.0            org.springframework.boot        spring-boot-starter-parent        2.6.2        jar    com.kaven    springboot    0.0.1-SNAPSHOT    springboot    springboot            1.8                            org.springframework.boot            spring-boot-starter-web                            org.projectlombok            lombok                                                    org.springframework.boot                spring-boot-maven-plugin                        

application.properties(配置文件):

spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB

max-file-size:指定允许上传文件的最大大小,默认值为1MB。

max-request-size:指定允许multipart/form-data请求的最大大小,默认值为10MB。

上传接口:

package com.kaven.springboot.controller;import org.apache.tomcat.util.http.fileupload.IOUtils;import org.springframework.http.HttpStatus;import org.springframework.util.StringUtils;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;@RestControllerpublic class FilesController {    @PostMapping(value="/upload", headers="content-type=multipart/form-data")    public String upload(@RequestParam(value = "file") MultipartFile file,                         HttpServletResponse response) throws IOException, InterruptedException {        System.out.println("有文件上传请求进来了");        FileOutputStream fileOutputStream = null;        InputStream inputStream = null;        try {            // 上传文件是否存在            if (file != null && !file.isEmpty()) {                // 如果上传文件存在,获取它的原始文件名                String fileName = file.getOriginalFilename();                if (StringUtils.hasText(fileName)) {                    // 将上传文件存储在服务器的E盘下(Windows)                    java.io.File outFile = new java.io.File("E:\" + fileName);                    // 基于outFile创建文件输出流实例                    fileOutputStream = new FileOutputStream(outFile);                    // 获取上传文件的输入流                    inputStream = file.getInputStream();                    /*                    * 将字节从输入流复制到输出流                    * 此方法在内部会缓冲输入,因此无需使用BufferedInputStream                    * 大型流(超过2GB)将在复制完成后返回字节复制值-1 ,因为无法将正确的字节数作为int返回                    * 对于大型流,需要使用copyLarge(InputStream, OutputStream)方法                    * 参数:                    * input - 要读取的InputStream                    * output - 要写入的OutputStream                    * */                    IOUtils.copy(inputStream, fileOutputStream);                }            }            else {                // 文件不存在                response.setStatus(HttpStatus.BAD_REQUEST.value());                return "文件不存在";            }        } catch (Exception e) {            // 文件上传错误            e.printStackTrace();            response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());            return "文件上传错误";        } finally {            if (fileOutputStream != null) {                fileOutputStream.flush();                fileOutputStream.close();            }        }        // 文件上传成功        response.setStatus(HttpStatus.OK.value());        return "文件上传成功";    }}

启动类:

package com.kaven.springboot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringbootApplication {    public static void main(String[] args) {        SpringApplication application = new SpringApplication(SpringbootApplication.class);        application.run(args);    }}

使用Postman进行测试。

上传的文件是完整的,可以播放(视频文件)。

上传文件不存在。

控制台的输出。

看完了这篇文章,相信你对"如何使用Java SpringBoot实现文件上传功能"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

文件 字节 输入 输出 功能 最大 成功 大小 篇文章 错误 测试 原始 代码 参数 完了 实例 接口 控制台 文件名 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 报告系统软件开发 手机提示网络安全 关于网络技术的手抄报 重庆服务器磁盘阵列卡驱动服务器 云计算包括网络技术吗 国产软件开发工具 市场 亿元 网络技术服务费进哪些会计科目 四年级下册网络安全画 网络安全 管理方面 不足 宝塔面板未安装数据库 湖南ip网络技术试卷 研发的软件开发费入什么费用 大数据 关系型数据库 工程化软件开发的根本困难 服务器怎么修改bmc地址 数据库名称为db1 数据库的时间日期设置 厦门社交聊天软件开发公司 持久化 数据库访问 网络安全知识小视频小学生 连接服务器网关失败 滨州感知网络技术有限公司 扫雷网络安全宣传活动 两种安全模式数据库 字画APP是境外服务器能破案吗 网络技术对于计算机专业 华为服务器配置管理口地址 网络安全监督管理检查方案 苹果的服务器和华为的是一样的吗 科技公司软件开发
0