在springboot中使用minio的上传和下载
时间: 2024-02-12 12:06:11 浏览: 77
好的,下面给你提供一个完整的在 Spring Boot 中使用 MinIO 进行文件上传和下载的示例代码。
1. 添加 MinIO 的依赖
在 pom.xml 文件中添加 MinIO 的依赖:
```xml
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
```
2. 配置 MinIO 的连接信息
在 application.yml 或 application.properties 文件中添加 MinIO 的连接信息,例如:
```yaml
spring:
cloud:
minio:
endpoint: http://localhost:9000
access-key: ACCESS-KEY
secret-key: SECRET-KEY
```
3. 编写 MinIO 的代码
```java
@Service
public class MinioService {
@Autowired
private MinioClient minioClient;
public void uploadFile(String bucketName, String fileName, InputStream inputStream) throws Exception {
minioClient.putObject(PutObjectArgs.builder()
.bucket(bucketName)
.object(fileName)
.stream(inputStream, inputStream.available(), -1)
.build());
}
public InputStream downloadFile(String bucketName, String fileName) throws Exception {
return minioClient.getObject(GetObjectArgs.builder()
.bucket(bucketName)
.object(fileName)
.build());
}
}
```
以上代码实现了上传和下载文件的功能。
4. 编写 Controller 层代码
```java
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
private MinioService minioService;
/**
* 上传文件
*/
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws Exception {
if (file.isEmpty()) {
return "上传失败,请选择文件";
}
String bucketName = "test-bucket";
String fileName = file.getOriginalFilename();
InputStream inputStream = file.getInputStream();
minioService.uploadFile(bucketName, fileName, inputStream);
return "上传成功";
}
/**
* 下载文件
*/
@GetMapping("/download")
public ResponseEntity<byte[]> downloadFile(@RequestParam("fileName") String fileName) throws Exception {
String bucketName = "test-bucket";
InputStream inputStream = minioService.downloadFile(bucketName, fileName);
byte[] bytes = IOUtils.toByteArray(inputStream);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
}
```
以上代码实现了上传和下载文件的接口。
5. 运行代码
运行 Spring Boot 项目,测试 MinIO 的上传和下载功能。
以上就是在 Spring Boot 中使用 MinIO 进行文件上传和下载的全部内容,希望能对你有所帮助。
阅读全文