在MinIO上使用Java实现上传和下载文件

java 使用minio上传下载文件(完整版) 通过上述步骤,我们创建了一个完整的 Spring Boot 应用程序,它使用 MinIO 上传和下载文件,并将文件信息存储到数据库中的file表。你可以通过接口上传文件,通过接口下载文件。 阅读详情

在MinIO上使用java实现文件的上传和下载。

1.1 mvn配置


<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.0</version>
</dependency>

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.0</version>
</dependency>

1.2 Java源文件

package com.example.demo.controller;

import io.minio.*;
import io.minio.errors.*;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;
import lombok.SneakyThrows;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.util.FastByteArrayOutputStream;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class MyMinIO {

    private MinioClient minioClient;

    public MyMinIO() {

        /*
        this.minioClient = MinioClient.builder()
            .endpoint("http://127.0.0.1:9000")
            .credentials("minioroot", "minioroot")
            .build();
        */

        // Configure the builder
        MinioClient.Builder builder = MinioClient.builder();
        builder.endpoint("http://127.0.0.1:9000");
        builder.credentials("minioroot", "minioroot");

        // Init the builder
        this.minioClient = builder.build();

    }

    @SneakyThrows
    private boolean isBucketExist(String bucketName) {

        // Set the builder
        BucketExistsArgs.Builder builder = BucketExistsArgs.builder();
        builder.bucket(bucketName);

        BucketExistsArgs bucketExistsArgs = builder.build();

        boolean isExist = this.minioClient.bucketExists(bucketExistsArgs);

        if (isExist) {
            System.out.println("The bucket is exist! ");
            return true;
        } else {
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            System.out.println("Create bucket is success! ");
            return true;
        }
    }

    @SneakyThrows
    public boolean uploadObject() {

        String bucketName = "mybucket";
        String filename = "my_data1.png";

        if (!this.isBucketExist(bucketName)) {
            return false;
        }

        /*
        UploadObjectArgs uploadObjectArgs = UploadObjectArgs
            .builder()
            .bucket(bucketName)
            .object(filename)
            .filename("/home/yyp/my_data.png")
            .build();
        */

        UploadObjectArgs.Builder builder = UploadObjectArgs.builder();
        builder.bucket(bucketName);
        builder.object(filename);
        builder.filename("/home/yyp/my_data.png");

        UploadObjectArgs uploadObjectArgs = builder.build();

        this.minioClient.uploadObject(uploadObjectArgs);
        return true;
    }

    @SneakyThrows
    public boolean removeObject(){
        String bucketName = "mybucket";
        String filename = "my_data1.png";

        /*
        this.minioClient.removeObject(RemoveObjectArgs
                .builder()
                .bucket(bucketName)
                .object(filename)
                .build());
        */

        RemoveObjectArgs.Builder builder = RemoveObjectArgs.builder();
        builder.bucket(bucketName);
        builder.object(filename);

        RemoveObjectArgs removeObjectArgs = builder.build();
        this.minioClient.removeObject(removeObjectArgs);

        return true;
    }

    @SneakyThrows
    public boolean downloadObject(){
        DownloadObjectArgs.Builder builder = DownloadObjectArgs.builder();

        builder.bucket("mybucket");
        builder.object("my_data.png");
        builder.filename("/home/yyp/my_data.png");
        DownloadObjectArgs downloadObjectArgs = builder.build();

        this.minioClient.downloadObject(downloadObjectArgs);
        return true;
    }

    @SneakyThrows
    public boolean downloadGetObject() {
        String bucketName = "mybucket";
        String filename = "my_data.png";

        if (!this.isBucketExist(bucketName)) {
            return false;
        }

        GetObjectArgs.Builder builder = GetObjectArgs.builder();
        builder.bucket(bucketName);
        builder.object(filename);

        GetObjectArgs objectArgs = builder.build();

        /*
        GetObjectArgs objectArgs = GetObjectArgs.builder()
            .bucket(bucketName)
            .object(filename)
            .build();
        */
        GetObjectResponse response = minioClient.getObject(objectArgs);

        // Read the byte stream of data
        byte[] buff = new byte[1024];
        FastByteArrayOutputStream fbaos = new FastByteArrayOutputStream();
        int len = 0;
        while ((len = response.read(buff)) != -1) {
            fbaos.write(buff, 0, len);
        }
        fbaos.flush();

        // Create the file
        File file = new File("/home/yyp/" + filename);
        if (!file.exists()) {
            file.createNewFile();
        }

        // Write the file
        OutputStream outputStream = new FileOutputStream(file);
        outputStream.write(fbaos.toByteArray());
        outputStream.flush();
        fbaos.close();

        System.out.println("Download file is success! ");

        return true;
    }

    @SneakyThrows
    public void deletMultiObject(){
        List<DeleteObject> objects = new LinkedList<>();
        objects.add(new DeleteObject("my_data.png"));
        objects.add(new DeleteObject("my_data1.png"));

        RemoveObjectsArgs.Builder builder = RemoveObjectsArgs.builder();
        builder.bucket("mybucket");
        builder.objects(objects);
        RemoveObjectsArgs removeObjectsArgs = builder.build();

        Iterable<Result<DeleteError>> results = this.minioClient.removeObjects(removeObjectsArgs);
        for (Result<DeleteError> result : results) {
            DeleteError error = result.get();
            System.out.println("Error in deleting object " + error.objectName() + "; " + error.message());
        }
    }


    public static void main(String[] args) {
        MyMinIO minio = new MyMinIO();
        minio.uploadObject();
//        minio.downloadGetObject();
//        minio.downloadObject();

//        minio.removeObject();

//        minio.deletMultiObject();
    }


}

MinIO文件服务器,从安装到使用 mino安装以及封装上传下载工具类,提供上传接口,数据表设计,上传异常处理,minio配置 阅读详情

相关推荐

【Java】对Minio指定Bucket大量文件的批量下载与本地文件夹的批量上传

需要批量下载一个bucket下的内容,bucket下文件有19GB+,且文件夹结构复杂,使用官方的Console无法完成这么大量文件的下载,而且也不支持文件夹的分享,所以自己写个工具下载,顺便把上传的也写了。

浩瀚宇宙的一粒尘埃 8086

minio上传与下载(代码篇)

本文主要介绍使用minio的javasdk处理上传和下载业务。

shenyunsese的专栏 3934

MinIO在Windows的部署与简单使用

目录 前言 一、MinIO是什么 二、MinIO的基础概念 三、MinIO的下载与启动 四、MinIO的javaAPI 前言 阿里云对于对于对象存储服务的定义是:对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。对于中小型企业,如果不选择存储上云,那么 Minio 是个不错的选择,它是一个轻量级的服务,作为对象存储的功能基本都具.

番茄炒蛋三分糖 1万+

Java之MinIO存储桶和对象API使用

System.out.println("uploaded successfully 耗时:" + (System.currentTimeMillis() - start));System.out.println("uploaded successfully 耗时:" + (System.currentTimeMillis() - start));OSS没有文件夹的概念,所有资源都是以文件来存储,但您可以通过创建一个以正斜线(/)结尾,大小为 0的Object来创建模拟文件夹(指定 /后,默认会自动创建)。

u013733643的博客 6302

minio 整合 springboot实现

1.新建minio服务器 为了方便我用docker 快速搭建minio服务 构建镜像 docker pull minio/minio 构建容器 docker run -p 9111:9000 --name minio1 \ -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ -v /tmp/data:/data \ mini

weixin_42404521的博客 1164

Minio 分布式文件系统 详解

直接在linux上进行环境搭建,使用命令进行下载minio并且启动服务 服务启动之后,可以直接对9000端口进行访问,同样的启动服务之后有日志进行输出。可以看到日志所表达的意思,在这里的一个控制台的端口是一个动态生成的,每一次启动服务的端口都会发生变换,在后续进行使用的使用肯定需要用到一个静态端口,可以使用来进行端口指定,并且第二个的话是指不推荐使用默认账号密码。 对账号密码进行设置,并且指定控制台端口进行启动。 在设置完账号密码之后进行启动,发现了报错,访问密钥长度至少3个字符,密钥长度至少8个字符……,

梅花寺 4145

minio实现文件上传下载和删除功能

前言 之前用到文件上传功能,在这里做个学习记录。使用minio实现,后面会记录使用fastdfs和阿里云的oss实现文件上传以及他们的比较(oss根据流量收费)。minio的中文文档:https://docs.min.io/cn/ minio安装 首先查询docker镜像: docker search minio 选着stars最高的那个拉取: docker pull minio/minio 启动minio服务器,并设置端口号,容器名,账号和密码: docker run -p 9000:90

tc979907461的博客 2万+

使用Minio搭建自己的文件系统

前言 最近接了一个项目,甲方不愿意买服务器,但是呢,项目又必须要用文件功能。所以很巧,最近又刚好看到了Minio这个牛逼的工具。正好借此机会记录下来此次操作的全部流程。 本次涉及到的功能有: Minio的安装与启动 控制台的使用以及存储桶的创建 存储桶的使用权限说明 使用控制台实现文件上传与下载 (重点)使用Springboot与Minio整合实现文件的增删改查 本次使用环境:Centos7.6+finalshell+java 1、Minio介绍 如果你听过这个,那么你直接跳到第二小节看使用说明。如果你

一条会编程的鱼 2730

【Java】java实现文件上传和下载(上传到指定路径/数据库/minio)

​ 所有源码均以上传至https://download.csdn.net/download/m0_64210833/89233948 ​

m0_64210833的博客 2万+

Java + Selenium + TestNg + Allure Web UI 自动化

我们知道,在Python中针对Web UI自动化有Python + Selenium + Pytest/Unittest +Allure的技术栈。那么对于Java而言,也有其独特的Web UI 自动化技术栈。相同的,我们同样的运用Selenium框架,测试报告同样运用Allure。不同的是,我们运用的语言由Python转化为了Java,测试用例管理框架从Pytest转化为了TestNG。

qq_45594960的博客 1913

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1103

服务器环境搭建-6 Minio安装与使用介绍

本文介绍Minio的搭建过程和使用方式,之后基于Minio给出一个Java使用案例。后续“基于Minio实现分片上传和断点续传”文章将以本文为基础。

shengyu 2157

uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

uniapp中H5微信登录,uniapp H5微信授权登录,微信公众号第三方网页(H5)授权登录(OAuth2.0)流程及逻辑详细教程,UNIAPP 开发H5 怎么实现微信公众号登录功能,uniapp如何实现H5网页的公众号微信登录,怎么做uniapp微信登录,uniapp h5项目怎么实现微信登录的功能,uniapp微信浏览器H5授权微信登录,UniApp开发H5接入微信登录的全过程,uniapp的H5页面使用微信登录,uniapp H5微信授权登录,H5之微信授权登陆 (uniapp网页版微信授权登录)

🏆 前端领域优质创作者 7409

minio 实现文件上传

minio 实现文件上传 1.导入依赖 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.3.4</version> </dependency> 2.application.yml 配置信息 minio: endpoint:

qq_39641842的博客 1万+

无刷电机里的霍尔传感器,和 AS5600 编码器到底有什么区别?

摘要: 无刷电机中的霍尔传感器主要用于换相控制,提供6种状态反馈,无法实现精确角度测量。与AS5600磁编码器(分辨率4096)相比,霍尔仅能确保电机“转得对”,而编码器则用于高精度角度反馈。在机器人等需要位置闭环的场景中,两者需协同使用:霍尔负责基础换相,编码器提供精确角度控制。简单应用中可仅用霍尔,但高精度定位必须搭配编码器。

qq_45430571的博客 242

新手必看:C#调用YOLO模型完成图片/视频目标检测(上位机版)

新手学习C#调用YOLO模型,核心是先把基础流程跑通,再逐步优化。图片检测是基础,视频检测就是在图片的基础上加循环和线程,而上位机的实际项目,就是在这个基础上适配工业硬件和业务需求。本文的代码都是新手能直接复制运行的,如果你运行时遇到问题,先检查前期准备是否到位,再看避坑指南。记住,新手别追求一步到位,先实现功能,再慢慢优化性能和界面。等你能熟练调用YOLO模型后,再去研究模型训练、量化优化等进阶内容,会轻松很多。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 988

Minio(储桶bucket)上传和下载文件【Java】

minio切片上传:构建高效文件传输管道

fei飞来了 8520

YOLOv8交通监控全方案:精准车辆计数+违章(闯红灯/压线)识别,拿来就落地!

作为深耕计算机视觉落地的开发者,我见过太多交通监控的“伪智能”——传统系统要么车辆计数不准(漏计/重复计数),要么违章识别滞后(靠人工回看录像),甚至连“闯红灯、压线”这类常见违章都无法实时判定,完全满足不了实际交通管理需求。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 646

MinIO安装和基本使用

文章目录简介安装(Docker)Java API 简介 MinIO是一款高性能的对象存储容器,适合存储大量的非结构化数据,例如:图片、视频、Word等文件。 安装(Docker) 拉取镜像 docker pull minio/minio 创建并运行容器 docker run -it --name minio -p 9000:9000 -p 9001:9001 -d \ -v /usr/local/docker/minio/data:/data \ -v /usr/local/docker/mini

qq_28834355的博客 4962

Python散点图(Scatter Plot):高阶分析、散点图矩阵、三维散点图及综合应用

散点图作为一种直观且功能强大的数据可视化工具,在数据分析中具有广泛的应用。通过观察散点图中数据点的分布模式,我们可以轻松地判断变量之间是否存在相关性,以及相关性的类型和强度。同时,散点图也是识别数据集中异常值的有效工具,无论是通过直观观察还是结合统计方法,都能帮助我们发现数据中的异常情况。掌握散点图的绘制和分析技巧,将使我们在数据探索和决策制定中更加得心应手。

SiArch的博客 1444

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

minio 文件预览_MinIO安装及使用教程(windows) 及java 上传 下载

2.新建一个目录存放minio文件,我建的文件名叫 D:\minioData,CMD进入刚刚下载的minio.exe所在目录,直接在cmd下运行:minio.exe server D:\minioData启动乐成以后如下图(启动就是这么简朴),最后红色字提醒修改access Key和Secret Key (默认全是minioadmin)3.浏览器打开http://127.0.0.1:9000/...

weixin_34857730的博客 1782

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java实现Minio上传下载文件

1.导包 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>3.0.10</version> </dependency> 2.配置minio服务端路径及登录秘钥 minio: url: http://localhost:9000 accessKey: minioadmi

weixin_41068815的博客 3364

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

docker 安装minio及实现文件上传、删除、下载

docker 安装minio及实现文件上传、删除、下载 要搭建一个分布式文件存储系统,听说fastDFS能实现,于是我搜了一下fastDFS,结果半路杀出一个minio 考虑到拓展性、开发api文档完善度、部署效率等原因我选择了minio。 因为个人没真正使用过fastDFS,所以不作过多评价,占个坑,以后有机会深度体验后回来写评测。 1. docker安装minio步骤 第一步 查镜像 docker search minio 第二步 拉镜像 docker pull minio/minio 第三步

weixin_42914989的博客 2416

minio实现文件分块上传功能

史上最完整的minio实现文件分块上传实现过程,包括minio安装、代码实现和完整的测试过程。

老王的博客 1052

springboot集成minio上传下载文件

minio往oss上传下载文件

qq_37398465的博客 721
上一篇: Docker安装MinIO
下一篇: Centos7挂载移动硬盘
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值