まずは使ったことのないminioを紹介します
MinlO は、Apache License v2.0 オープン ソース プロトコルに基づくオブジェクト ストレージ サービスです。Amazon S3 クラウド ストレージ サービス インターフェイスと互換性があり、大容量の非構造化データの保存に非常に適しています。たとえば、写真、ビデオ、ログ ファイル、バックアップ データ、コンテナ/仮想マシン イメージなど、オブジェクト ファイルは数 kb から最大 5T までの任意のサイズにすることができます。MinlO は、NodeJS、Redis、MySQL などの他のアプリケーションと簡単に統合できる非常に軽量なサービスです。
MinIO は Kubernetes ネイティブであり、すべてのパブリック クラウド、すべての Kubernetes ディストリビューション、プライベート クラウド、およびエッジで利用できる唯一のオブジェクト ストレージ スイートです。MinIO はソフトウェア定義であり、GNU AGPL v3 に基づく 100% オープン ソースです。
ここではまず nacos で minio 情報を設定します。
まず minio の依存関係をインポートします。
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>${
minio.version}</version>
</dependency>
コントローラーに挿入します。
@Autowired
MinioClient minioClient;
@Autowired
private MinioConfig minioConfig;
@Value(value = "${minio.bucketName}")
private String bucket;
minio 構成クラス: MinioConfig は次のとおりです。
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig
{
/**
* 服务地址
*/
private String url;
/**
* 用户名
*/
private String accessKey;
/**
* 密码
*/
private String secretKey;
/**
* 存储桶名称
*/
private String bucketName;
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public String getAccessKey()
{
return accessKey;
}
public void setAccessKey(String accessKey)
{
this.accessKey = accessKey;
}
public String getSecretKey()
{
return secretKey;
}
public void setSecretKey(String secretKey)
{
this.secretKey = secretKey;
}
public String getBucketName()
{
return bucketName;
}
public void setBucketName(String bucketName)
{
this.bucketName = bucketName;
}
@Bean
public MinioClient getMinioClient()
{
return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
}
}
単一ファイルのアップロード インターフェイス:
@PostMapping("/uploadFile")
R upload(MultipartFile file) throws Exception {
String fileName = FileUploadUtils.extractFilename(file);
PutObjectArgs args = PutObjectArgs.builder()
.bucket(minioConfig.getBucketName())
.object(fileName)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(args);
System.out.println(fileName);
return R.ok(fileName);
}
複数のファイルのアップロード インターフェイス:
@ApiOperation("多文件上传minio")
@PostMapping("/uploadAllFile")
R upload(MultipartFile[] files) throws Exception {
for (MultipartFile file : files) {
String fileName = FileUploadUtils.extractFilename(file);
PutObjectArgs args = PutObjectArgs.builder()
.bucket(minioConfig.getBucketName())
.object(fileName)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(args);
System.out.println(fileName);
}
return R.ok();
}
postman で複数のファイルを選択:
アップロード結果: