项目minio-spring代码:
1、pom.xml中引入
<!--内嵌tomcat支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- 引入jsp 、jstl支持 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--minio 对象存储 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>6.0.11</version>
</dependency>
<!--commons-io 流操作 (可选)-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
server:
port: 8081
servlet:
context-path: /minioserver
spring:
application:
name: minio-spring
mvc:
view:
prefix: /WEB-INF/pages
#suffix: .jsp
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
minio:
endpoint: http://192.168.11.10:9000
accesskey: admin
secretKey: 12345678
3、MinioProp.java属性文件
package com.tingcream.miniospring.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Getter
@Setter
@ConfigurationProperties(prefix = "minio")
@Component
public class MinioProp {
private String endpoint;//连接url
private String accesskey;//用户名
private String secretKey;//密码
}
4、MinioConfiguration.java 核心配置类
package com.tingcream.miniospring.config;
import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableConfigurationProperties(MinioProp.class)
public class MinioConfiguration {
@Autowired
private MinioProp minioProp;
@Bean
public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
MinioClient client =new MinioClient(minioProp.getEndpoint(),minioProp.getAccesskey(),minioProp.getSecretKey());
return client;
}
}
5、CommonConstants.java 常量配置
package com.tingcream.miniospring.common;
public class CommonConstants {
public static final String MINIO_BUCKET="mybucket";
}
6、MinioController.java 文件上传、下载
package com.tingcream.miniospring.controller;
import com.tingcream.miniospring.common.CommonConstants;
import com.tingcream.miniospring.common.RetMsg;
import io.minio.MinioClient;
import io.minio.ObjectStat;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* minio文件管理,上传、下载文件
*/
@Controller
@RequestMapping("/minio")
public class MinioController {
@Autowired
private MinioClient minioClient;
@GetMapping("/upload")
public String upload(){
return "/upload.jsp";
}
@ResponseBody
@PostMapping("/upload")
public RetMsg upload(@RequestParam(name = "file",required = false) MultipartFile file, HttpServletRequest request){
if(file==null || file.getSize()==0){
return RetMsg.failure("上传文件不能为空");
}
String orgfileName = file.getOriginalFilename();
try {
InputStream in = file.getInputStream();
String contentType= file.getContentType();
minioClient.putObject(CommonConstants.MINIO_BUCKET,orgfileName,in,null, null, null, contentType);
Map<String,Object> data=new HashMap<>();
data.put("bucketName",CommonConstants.MINIO_BUCKET);
data.put("fileName",orgfileName);
return RetMsg.success(data);
} catch (Exception e) {
e.printStackTrace();
}
return RetMsg.failure("上传失败");
}
@RequestMapping("/download")
public void download(HttpServletRequest request, HttpServletResponse response,String fileName) {
InputStream in=null;
try {
//获取文件对象 stat原信息
ObjectStat stat =minioClient.statObject(CommonConstants.MINIO_BUCKET, fileName);
response.setContentType(stat.contentType());
//response.setContentType("application/octet-stream; charset=UTF-8");
in = minioClient.getObject(CommonConstants.MINIO_BUCKET, fileName);
IOUtils.copy(in,response.getOutputStream());
}catch (Exception e){
e.printStackTrace();
}finally {
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
7、upload.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>文件上传</h2>
<form accept-charset="UTF-8" action="${pageContext.request.contextPath}/minio/upload" method="post"
enctype="multipart/form-data" target="_blank">
文件:<input type="file" name="file" />
<input type="submit" value="上传"/>
</form>
</body>
</html>


阅读排行


Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1