-
搭建MinIO服务器:
-
下载MinIO并运行,可以使用以下命令启动MinIO服务器:
minio server /data --console-address ":9001"其中
/data是存储文件的路径,9001是MinIO控制台的端口。通过浏览器访问http://localhost:9001,并使用默认的access key和secret key登录,创建一个bucket用来存储文件。
-
-
集成Spring Boot与MinIO:
-
在
pom.xml中添加MinIO SDK的依赖:xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.0.3</version> </dependency> -
在
application.properties中添加MinIO的配置信息:minio.endpoint=http://localhost:9000 minio.accessKey=minioadmin minio.secretKey=minioadmin minio.bucketName=files -
创建MinIO Service类,用于文件的上传和下载:
java @Service public class MinioService { @Value("${minio.endpoint}") private String minioEndpoint; @Value("${minio.accessKey}") private String minioAccessKey; @Value("${minio.secretKey}") private String minioSecretKey; @Value("${minio.bucketName}") private String bucketName; private MinioClient minioClient; @PostConstruct public void init() { minioClient = MinioClient.builder() .endpoint(minioEndpoint) .credentials(minioAccessKey, minioSecretKey) .build(); } public String uploadFile(MultipartFile file) throws Exception { String fileName = System.currentTimeMillis() + "-" + file.getOriginalFilename(); minioClient.putObject( PutObjectArgs.builder() .bucket(bucketName) .object(fileName) .stream(file.getInputStream(), file.getSize(), -1) .contentType(file.getContentType()) .build() ); return fileName; } public String getFileUrl(String fileName) { return minioClient.getPresignedObjectUrl( GetPresignedObjectUrlArgs.builder() .bucket(bucketName) .object(fileName) .build() ); } } -
创建FileController,实现文件上传和预览的接口:
java复制 @RestController @RequestMapping("/files") public class FileController { @Autowired private MinioService minioService; @PostMapping("/upload") public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) { try { String fileName = minioService.uploadFile(file); return ResponseEntity.ok(fileName); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); } } @GetMapping("/preview/{fileName}") public ResponseEntity<String> previewFile(@PathVariable String fileName) { String previewUrl = minioService.getPreviewUrl(fileName); return ResponseEntity.ok(previewUrl); } } ```1. **集成KKFileView实现文件预览**: -
下载并运行KKFileView,可以使用Docker安装:
docker run -d -p 8012:8012 --name kkfileview keking/kkfileview -
配置KKFileView服务的地址:
kkfileview.server=http://localhost:8012 -
在MinioService中创建一个方法,用于生成文件的预览URL:
java public String getPreviewUrl(String fileName) { String fileUrl = getFileUrl(fileName); return kkFileViewServer + "/onlinePreview?url=" + URLEncoder.encode(fileUrl, StandardCharsets.UTF_8); } -
测试文件上传与预览,使用Postman或前端页面上传文件,访问
/files/upload接口,然后访问/files/preview/{fileName}获取文件的预览链接。
-
通过上述步骤,你可以在Spring Boot项目中集成MinIO和KKFileView,实现文件的存储和在线预览功能。