服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java SpringBoot实现文件上传功能的示例代码

Java SpringBoot实现文件上传功能的示例代码

2022-09-15 17:37m0_54850467 Java教程

这篇文章主要介绍了如何利用Java SpringBoot实现文件上传功能,文中的示例代码讲解详细,对我们学习有一定帮助,需要的可以参考一下

测试代码

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.6.2</version>
  </parent>

  <packaging>jar</packaging>

  <groupId>com.kaven</groupId>
  <artifactId>springboot</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>springboot</name>
  <description>springboot</description>

  <properties>
      <java.version>1.8</java.version>
  </properties>

  <dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
      </dependency>
  </dependencies>

  <build>
      <plugins>
          <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
      </plugins>
  </build>
</project>

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;

@RestController
public 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;

@SpringBootApplication
public class SpringbootApplication {

  public static void main(String[] args) {
      SpringApplication application = new SpringApplication(SpringbootApplication.class);
      application.run(args);
  }
}

使用Postman进行测试。

Java SpringBoot实现文件上传功能的示例代码

Java SpringBoot实现文件上传功能的示例代码

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

Java SpringBoot实现文件上传功能的示例代码

上传文件不存在。

Java SpringBoot实现文件上传功能的示例代码

控制台的输出。

Java SpringBoot实现文件上传功能的示例代码

到此这篇关于Java SpringBoot实现文件上传功能的示例代码的文章就介绍到这了,更多相关SpringBoot文件上传内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_54850467/article/details/123427555

延伸 · 阅读

精彩推荐