• SpringBoot中如何实现文件的上传下载功能
  • 发布于 1周前
  • 19 热度
    0 评论

前言:

文件的上传下载是我们开发系统中非常常见的一种功能。对于很多JAVA初学者来说可能还不知道该怎么做文件的上传,下载功能,今天我们就用一个简单的文件上传下载功能展示一下文件上传下载的基本实现过程。

依赖包

<!-- 堆代码 duidaima.com -->
<!-- 版本号设置 -->
<properties>
  <commons-fileupload.version>1.5</commons-fileupload.version>
  <commons-io.version>2.11.0</commons-io.version>
</properties>

<!-- 依赖包 -->
<dependencies>
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>${commons-fileupload.version}</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>${commons-io.version}</version>
  </dependency>
</dependencies>
配置文件
spring:
  # 请求响应
  servlet:
    # 文件上传
    multipart:
      # 单个文件上传的最大大小
      max-file-size: 50MB
      # 多个文件上传的最大总大小
      max-request-size: 50MB
控制类
package wxw.mengyuan.demo.fileupload;

import org.springframework.core.io.InputStreamResource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

/**
 * 文件上传/下载控制类
 */
@
RestController@ RequestMapping(value = "/fileUpDown")
public class FileUpDownController {

    /**
     * 文件上传
     * @param myFile 对应表单中上传的input的name值
     */
    @
    RequestMapping("/fileUpload")@ ResponseBody
    public String fileUpload(MultipartFile myFile) throws IOException {
        // 上传文件的名称
        System.out.println(myFile.getOriginalFilename());

        // 上传文件的大小
        System.out.println(myFile.getSize());

        // 保存上传文件
        myFile.transferTo(new File("D:\\个人学习资料库\\照片验证22.jpg"));

        return "上传成功";
    }

    /**
     * 文件下载
     */
    @
    RequestMapping("/fileDownload")
    public ResponseEntity < InputStreamResource > fileDownload() throws IOException {
        // 读取文件
        InputStreamResource isr = new InputStreamResource(new FileInputStream("D:\\idf_web_client.zip"));

        // 返回文件名称
        String resultFileName = URLEncoder.encode("娃哈哈.zip", "UTF-8");

        // 创建返回对象
        ResponseEntity.BodyBuilder builder = ResponseEntity.ok();
        // 设置返回结果媒体类型的响应头
        builder.contentType(MediaType.APPLICATION_OCTET_STREAM);
        // 允许前端读取指定请求头的信息
        builder.header("Access-Control-Expose-Headers", "Content-Disposition");
        // 设置返回文件的名称
        builder.header("Content-Disposition", "attachment; filename=" + resultFileName);
        // 将结果返回给前端
        return builder.body(isr);
    }

}

用户评论