Java は minio を使用してファイルをバッチでアップロードします

まずは使ったことのない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 で複数のファイルを選択:
ここに画像の説明を挿入
アップロード結果:
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_42260782/article/details/131128350