postman 同时上传多个文件_SpringBoot入门建站全系列(九)文件上传功能与下载方式...

本文介绍了SpringBoot实现文件上传和下载的多种方式,包括单个和多个文件上传,从HttpServletRequest获取文件,以及通过Spring映射、nginx代理和ResponseEntity读取文件进行下载。还提供了项目构建工具和详细教程链接。
摘要由CSDN通过智能技术生成

49ea06df4c8fa4abe519bdaaafd45e08.png

SpringBoot入门建站全系列(九)文件上传功能与下载方式

Spring对文件上传做了简单的封装,就是用MultipartFile这个对象去接收文件,当然有很多种写法,下面会一一介绍。

文件的下载很简单,给一个链接就行,而这个链接怎么生成,也有很多方式,下面也会讲解下常用的方式。

项目地址: 品茗IT-同步发布

品茗IT 提供在线支持:

一键快速构建Spring项目工具

一键快速构建SpringBoot项目工具

一键快速构建SpringCloud项目工具

一站式Springboot项目生成

Mysql一键生成Mybatis注解Mapper

如果大家正在寻找一个java的学习环境,或者在开发中遇到困难,可以加入我们的java学习圈,点击即可加入,共同学习,节约学习时间,减少很多在学习中遇到的难题。

一、配置

本文假设你已经引入spring-boot-starter-web。已经是个SpringBoot项目了,如果不会搭建,可以打开这篇文章看一看《SpringBoot入门建站全系列(一)项目建立》。因为文件上传和下载不需要引入额外的jar包了。但是需要做如下配置:

application.properties 中需要添加下面的配置:

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=50MB

这里,

  • spring.servlet.multipart.max-file-size是对单个文件大小的限制。
  • spring.servlet.multipart.max-request-size是对单次请求的大小进行限制

至此,已经可以正常的进行上传下载了,就剩下写代码了。

二、文件上传的几种方式

2.1 单个文件上传

在Controller的RequestMapping注解的方法参数中,直接将MultipartFile作为参数传递进来。

package com.cff.springbootwork.web.file;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.cff.springbootwork.dto.ResultModel;
import com.cff.springbootwork.service.UploadService;

@RestController
@RequestMapping("/file")
public class FileRest {
    
    private Logger log = LoggerFactory.getLogger(this.getClass());

    @Value("${upload.static.url}")
    private String uploadStaticUrl;

    @Autowired
    UploadService uploadService;

    @RequestMapping("/upload")
    public ResultModel upload(@RequestParam("files") MultipartFile file) {
    
        try {
    
            if (file.isEmpty()) {
    
                return ResultModel.error("文件不能为空!");
            }
            String fileName = uploadService.saveUploadFil
好的,下面是基于Spring Boot使用Minio作为存储的文件上传与下载功能的微服务的技术方案: 1. 环境准备 首先需要在本地或云服务器上安装Minio服务,可以参考官方文档进行安装和配置。在本地开发环境中,可以使用Minio的Docker镜像进行快速部署。 2. 引入依赖 在Spring Boot项目的pom.xml中引入Minio的Java客户端依赖: ``` <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency> ``` 3. 配置参数 在application.properties或application.yml中配置Minio的连接参数: ``` minio.endpoint=http://localhost:9000 minio.access-key=minio minio.secret-key=minio123 minio.bucket-name=my-bucket ``` 4. 编写上传文件的接口 编写一个文件上传的接口,包括以下步骤: - 获取上传文件; - 使用Minio提供的Java API将文件上传到指定的Bucket中; - 返回上传后的文件URL。 示例代码如下: ``` @RestController public class FileController { @Autowired private MinioClient minioClient; @Value("${minio.bucket-name}") private String bucketName; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) throws Exception { String filename = file.getOriginalFilename(); InputStream inputStream = file.getInputStream(); minioClient.putObject(PutObjectArgs.builder() .bucket(bucketName) .object(filename) .stream(inputStream, inputStream.available(), -1) .build()); return minioClient.getObjectUrl(bucketName, filename); } } ``` 5. 编写下载文件的接口 编写一个文件下载的接口,包括以下步骤: - 根据文件名从Minio中获取文件流; - 将文件流写入到HttpServletResponse中,以实现下载。 示例代码如下: ``` @RestController public class FileController { @Autowired private MinioClient minioClient; @Value("${minio.bucket-name}") private String bucketName; @GetMapping("/download") public void download(@RequestParam("filename") String filename, HttpServletResponse response) throws Exception { InputStream inputStream = minioClient.getObject(GetObjectArgs.builder() .bucket(bucketName) .object(filename) .build()); response.setHeader("Content-Disposition", "attachment; filename=" + filename); IOUtils.copy(inputStream, response.getOutputStream()); response.flushBuffer(); } } ``` 6. 测试接口 启动Spring Boot应用,通过Postman等工具测试上传和下载文件的接口。 以上就是基于Spring Boot使用Minio作为云存储的文件上传与下载功能的微服务的技术方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值