一,application.yml中配置Minio
minio:
endpoint: 127.0.0.1
port: 9000
accessKey: minioadmin
secretKey: minioadmin
secure: false
bucketName: "huike-crm"
configDir: "/data/excel"
二, ,Minio实现类
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
private final static String HTTP = "http://";
private String endpoint;
private int port;
private String accessKey;
private String secretKey;
private Boolean secure;
private String bucketName;
}
三,service层
import org.springframework.web.multipart.MultipartFile;
import com.huike.common.core.domain.AjaxResult;
public interface ISysFileService {
AjaxResult upload(MultipartFile file);
}
四,serviceImpl
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import io.minio.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import com.huike.clues.service.ISysFileService;
import com.huike.common.config.MinioConfig;
import com.huike.common.core.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
@Service
@Slf4j
public class SysFileServiceImpl implements ISysFileService{
@Autowired
MinioConfig minioConfig;
@Override
public AjaxResult upload(MultipartFile file) {
InputStream inputStream = null;
MinioClient minioClient = getClient();
String bucketName = minioConfig.getBucketName();
try {
inputStream = file.getInputStream();
boolean found =
minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
String filename = file.getOriginalFilename();
String objectName = new SimpleDateFormat("yyyy/MM/dd/").format(new Date())
+ UUID.randomUUID().toString().replaceAll("-", "")
+ filename.substring(filename.lastIndexOf("."));
PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)
.bucket(bucketName)
.contentType(file.getContentType())
.stream(file.getInputStream(),file.getSize(),-1).build();
minioClient.putObject(objectArgs);
AjaxResult ajax = AjaxResult.success();
ajax.put("fileName","/" + bucketName + "/" +objectName);
ajax.put("url","http://" + minioConfig.getEndpoint() + ":" + minioConfig.getPort()
+ "/" + minioConfig.getBucketName() + "/" + objectName);
return ajax;
}catch(Exception e){
e.printStackTrace();
return AjaxResult.error("上传失败");
}finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
log.debug("inputStream close IOException:" + e.getMessage());
}
}
}
}
private MinioClient getClient(){
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://"+minioConfig.getEndpoint()+":"+ minioConfig.getPort())
.credentials(minioConfig.getAccessKey(),minioConfig.getSecretKey())
.build();
return minioClient;
}
}