初始化git 基础代码
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="Spring" name="Spring">
|
||||
<configuration />
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
44
heima-leadnews-basic/heima-file-starter/pom.xml
Normal file
44
heima-leadnews-basic/heima-file-starter/pom.xml
Normal file
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>heima-leadnews-basic</artifactId>
|
||||
<groupId>com.heima</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>heima-file-starter</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-autoconfigure</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.minio</groupId>
|
||||
<artifactId>minio</artifactId>
|
||||
<version>7.1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.heima.file.config;
|
||||
|
||||
import com.heima.file.service.FileStorageService;
|
||||
import io.minio.MinioClient;
|
||||
import lombok.Data;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
|
||||
@Data
|
||||
@Configuration
|
||||
@EnableConfigurationProperties({MinIOConfigProperties.class})
|
||||
//当引入FileStorageService接口时
|
||||
@ConditionalOnClass(FileStorageService.class)
|
||||
public class MinIOConfig {
|
||||
|
||||
@Autowired
|
||||
private MinIOConfigProperties minIOConfigProperties;
|
||||
|
||||
@Bean
|
||||
public MinioClient buildMinioClient() {
|
||||
return MinioClient
|
||||
.builder()
|
||||
.credentials(minIOConfigProperties.getAccessKey(), minIOConfigProperties.getSecretKey())
|
||||
.endpoint(minIOConfigProperties.getEndpoint())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.heima.file.config;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ConfigurationProperties(prefix = "minio") // 文件上传 配置前缀file.oss
|
||||
public class MinIOConfigProperties implements Serializable {
|
||||
|
||||
private String accessKey;
|
||||
private String secretKey;
|
||||
private String bucket;
|
||||
private String endpoint;
|
||||
private String readPath;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.heima.file.service;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* @author itheima
|
||||
*/
|
||||
public interface FileStorageService {
|
||||
|
||||
|
||||
/**
|
||||
* 上传图片文件
|
||||
* @param prefix 文件前缀
|
||||
* @param filename 文件名
|
||||
* @param inputStream 文件流
|
||||
* @return 文件全路径
|
||||
*/
|
||||
public String uploadImgFile(String prefix, String filename,InputStream inputStream);
|
||||
|
||||
/**
|
||||
* 上传html文件
|
||||
* @param prefix 文件前缀
|
||||
* @param filename 文件名
|
||||
* @param inputStream 文件流
|
||||
* @return 文件全路径
|
||||
*/
|
||||
public String uploadHtmlFile(String prefix, String filename,InputStream inputStream);
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
* @param pathUrl 文件全路径
|
||||
*/
|
||||
public void delete(String pathUrl);
|
||||
|
||||
/**
|
||||
* 下载文件
|
||||
* @param pathUrl 文件全路径
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
public byte[] downLoadFile(String pathUrl);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
package com.heima.file.service.impl;
|
||||
|
||||
|
||||
import com.heima.file.config.MinIOConfig;
|
||||
import com.heima.file.config.MinIOConfigProperties;
|
||||
import com.heima.file.service.FileStorageService;
|
||||
import io.minio.GetObjectArgs;
|
||||
import io.minio.MinioClient;
|
||||
import io.minio.PutObjectArgs;
|
||||
import io.minio.RemoveObjectArgs;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
@Slf4j
|
||||
@EnableConfigurationProperties(MinIOConfigProperties.class)
|
||||
@Import(MinIOConfig.class)
|
||||
public class MinIOFileStorageService implements FileStorageService {
|
||||
|
||||
@Autowired
|
||||
private MinioClient minioClient;
|
||||
|
||||
@Autowired
|
||||
private MinIOConfigProperties minIOConfigProperties;
|
||||
|
||||
private final static String separator = "/";
|
||||
|
||||
/**
|
||||
* @param dirPath
|
||||
* @param filename yyyy/mm/dd/file.jpg
|
||||
* @return
|
||||
*/
|
||||
public String builderFilePath(String dirPath,String filename) {
|
||||
StringBuilder stringBuilder = new StringBuilder(50);
|
||||
if(!StringUtils.isEmpty(dirPath)){
|
||||
stringBuilder.append(dirPath).append(separator);
|
||||
}
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
|
||||
String todayStr = sdf.format(new Date());
|
||||
stringBuilder.append(todayStr).append(separator);
|
||||
stringBuilder.append(filename);
|
||||
return stringBuilder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传图片文件
|
||||
* @param prefix 文件前缀
|
||||
* @param filename 文件名
|
||||
* @param inputStream 文件流
|
||||
* @return 文件全路径
|
||||
*/
|
||||
@Override
|
||||
public String uploadImgFile(String prefix, String filename,InputStream inputStream) {
|
||||
String filePath = builderFilePath(prefix, filename);
|
||||
try {
|
||||
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
|
||||
.object(filePath)
|
||||
.contentType("image/jpg")
|
||||
.bucket(minIOConfigProperties.getBucket()).stream(inputStream,inputStream.available(),-1)
|
||||
.build();
|
||||
minioClient.putObject(putObjectArgs);
|
||||
StringBuilder urlPath = new StringBuilder(minIOConfigProperties.getReadPath());
|
||||
urlPath.append(separator+minIOConfigProperties.getBucket());
|
||||
urlPath.append(separator);
|
||||
urlPath.append(filePath);
|
||||
return urlPath.toString();
|
||||
}catch (Exception ex){
|
||||
log.error("minio put file error.",ex);
|
||||
throw new RuntimeException("上传文件失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传html文件
|
||||
* @param prefix 文件前缀
|
||||
* @param filename 文件名
|
||||
* @param inputStream 文件流
|
||||
* @return 文件全路径
|
||||
*/
|
||||
@Override
|
||||
public String uploadHtmlFile(String prefix, String filename,InputStream inputStream) {
|
||||
String filePath = builderFilePath(prefix, filename);
|
||||
try {
|
||||
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
|
||||
.object(filePath)
|
||||
.contentType("text/html")
|
||||
.bucket(minIOConfigProperties.getBucket()).stream(inputStream,inputStream.available(),-1)
|
||||
.build();
|
||||
minioClient.putObject(putObjectArgs);
|
||||
StringBuilder urlPath = new StringBuilder(minIOConfigProperties.getReadPath());
|
||||
urlPath.append(separator+minIOConfigProperties.getBucket());
|
||||
urlPath.append(separator);
|
||||
urlPath.append(filePath);
|
||||
return urlPath.toString();
|
||||
}catch (Exception ex){
|
||||
log.error("minio put file error.",ex);
|
||||
ex.printStackTrace();
|
||||
throw new RuntimeException("上传文件失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
* @param pathUrl 文件全路径
|
||||
*/
|
||||
@Override
|
||||
public void delete(String pathUrl) {
|
||||
String key = pathUrl.replace(minIOConfigProperties.getEndpoint()+"/","");
|
||||
int index = key.indexOf(separator);
|
||||
String bucket = key.substring(0,index);
|
||||
String filePath = key.substring(index+1);
|
||||
// 删除Objects
|
||||
RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket(bucket).object(filePath).build();
|
||||
try {
|
||||
minioClient.removeObject(removeObjectArgs);
|
||||
} catch (Exception e) {
|
||||
log.error("minio remove file error. pathUrl:{}",pathUrl);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 下载文件
|
||||
* @param pathUrl 文件全路径
|
||||
* @return 文件流
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public byte[] downLoadFile(String pathUrl) {
|
||||
String key = pathUrl.replace(minIOConfigProperties.getEndpoint()+"/","");
|
||||
int index = key.indexOf(separator);
|
||||
String bucket = key.substring(0,index);
|
||||
String filePath = key.substring(index+1);
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(minIOConfigProperties.getBucket()).object(filePath).build());
|
||||
} catch (Exception e) {
|
||||
log.error("minio down file error. pathUrl:{}",pathUrl);
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
byte[] buff = new byte[100];
|
||||
int rc = 0;
|
||||
while (true) {
|
||||
try {
|
||||
if (!((rc = inputStream.read(buff, 0, 100)) > 0)) break;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
byteArrayOutputStream.write(buff, 0, rc);
|
||||
}
|
||||
return byteArrayOutputStream.toByteArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||
com.heima.file.service.impl.MinIOFileStorageService
|
||||
Reference in New Issue
Block a user