MinIo 安装及其集成到java中上传下载图片信息

2023-11-09

MinIo 安装及其集成到java中上传下载图片信息
win 下安装
下载链接:https://min.io/download#/windows
下载好后cmd打开控制台

输入:minio.exe server D:\MinIo\data
注:D:\MinIo\data 可以自定义盘符目录,存放图片信息
在这里插入图片描述
成功启动,输入:127.0.0.1:9000 成功登陆界面(默认账号密码:minioadmin)
在这里插入图片描述
登录成功后
在这里插入图片描述

linux下安装
下载链接:https://min.io/download#/linux
##赋权限
chmod +x minio
##启动
./minio server /root/minio/data

后台启动
nohup ./minio server /data > minio.log 2>&1 &
在这里插入图片描述
安装成功,访问和win下一致;

springboot集成minio
pom.xml

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

application.yml
#####################minio文件服务器配置##################################
minio:
endpoint: http://127.0.0.1:9000
accesskey: minioadmin
secretKey: minioadmin
imgBucket: bucketName

注:修改密码密码不能小于8位

上传图片,返回图片存储路径

//filename--图片名称  bucket -- 桶名称(bucketName)  serviceUrl--文件服务器地址(http://127.0.0.1:9000)
public String saveImg(MultipartFile file, String bucket, String serviceUrl) {
        String fileName = file.getOriginalFilename();
        String url = null;
        try {
            InputStream in = file.getInputStream();
            minioClient.putObject(bucket, fileName, in, new PutObjectOptions(in.available(), -1));
            in.close();
            url = serviceUrl+"/"+bucket+"/"+fileName;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return url;
    }

下载图片

public void downloadImg(String filename, HttpServletResponse httpResponse) {

        try{
            //imgBucket--桶名称  filename-- 图片名称
            InputStream files = minioClient.getObject(imgBucket, filename);
            InputStream ism = new BufferedInputStream(files);
            // 调用statObject()来判断对象是否存在。
            // 如果不存在, statObject()抛出异常,
            // 否则则代表对象存在
            minioClient.statObject(imgBucket, filename);
            byte buf[] = new byte[1024];
            int length = 0;
            httpResponse.reset();
            //Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。
            // Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,
            // 文件直接在浏览器上显示或者在访问时弹出文件下载对话框。
            httpResponse.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
            httpResponse.setContentType("application/x-msdownload");
            httpResponse.setCharacterEncoding("utf-8");
            OutputStream osm = new BufferedOutputStream(httpResponse.getOutputStream());
            while ((length = ism.read(buf))>0) {
                osm.write(buf,0, length);
            }
            //关闭流
            osm.close();
        } catch (MinioException ex) {
            ex.printStackTrace();
        }  catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

批量下载成zip

public void downloadPic(String[] files, HttpServletRequest request, HttpServletResponse response) throws IOException {
        ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
        try {
            String downloadFilename = "测试.zip";// 文件的名称
            downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");// 转换中文否则可能会产生乱码
            response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
            response.setHeader("Content-Disposition","attachment;filename="+downloadFilename);// 设置在下载框默认显示的文件名
            //根据名称获取路径信息
            for (String file : files) {
                String url = minioClient.getObjectUrl(imgBucket, file);
                zos.putNextEntry(new ZipEntry(file+ ".jpg"));
                InputStream fis = getInputStreamByGet(url);
                byte[] buffer = new byte[1024];
                int r = 0;
                while ((r = fis.read(buffer)) != -1) {
                    zos.write(buffer, 0, r);
                }
                fis.close();
            }
        }catch (Exception e) {
            e.printStackTrace();
        } finally {
            zos.flush();
            zos.close();
        }
    }
public static InputStream getInputStreamByGet(String url) {
        try {
            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
            conn.setReadTimeout(5000);
            conn.setConnectTimeout(5000);
            conn.setRequestMethod("GET");
            if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                InputStream inputStream = conn.getInputStream();
                return inputStream;
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

删除图片信息

public void delImg(String imgBucket, String imgName, String serviceUrl) {
        String url = null;
        try {
            // 从mybucket中删除myobject。
            minioClient.removeObject(imgBucket, imgName);
            SysLog.info("successfully removed mybucket/myobject");
            url = serviceUrl+"/"+imgBucket+"/"+imgName;
        } catch (Exception e) {
            System.out.println("Error: " + e);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MinIo 安装及其集成到java中上传下载图片信息 的相关文章

随机推荐

  • java异常分类

    一 异常父类 Throwable 有两个子类 1 Error 严重问题 2 Exception 非严重问题 二 Exception 1 运行时异常 是RuntimeException以及RuntimeException的子类 2 非运行时异
  • Java中将json字符串导出为json文件【详细步骤】

    一 概述 请根据具体需求具体改动 此代码需要将前端的数据查询出来 然后进行json字符串的转化 getCatalogId id 方法是根据id查出来的内容然后再进行转换成json字符串 也可以直接传入json字符串进行测试 二 代码 Api
  • 案例-使用MapReduce实现join操作

    哈喽 各位小伙伴们中秋快乐 好久没更新新的文章啦 今天分享如何使用mapreduce进行join操作 在离线计算中 我们常常不只是会对单一一个文件进行操作 进行需要进行两个或多个文件关联出更多数据 类似与sql中的join操作 今天就跟大家
  • 【行业了解】天眼查、企查查、启信宝、爱企查

    行业了解 天眼查 企查查 启信宝 爱企查 前言 今天写 行业分析 矿泉水行业 的时候 简单从两个三方平台获取信息 不过毕竟是第三方平台 我不了解的话我心里不放心 于是简单了解一下查企业的第三方平台 11月22写 企业分析 索菲亚 的时候用了
  • 睿智的目标检测37——TF2搭建SSD目标检测平台(tensorflow2)

    睿智的目标检测37 TF2搭建SSD目标检测平台 tensorflow2 学习前言 什么是SSD目标检测算法 源码下载 SSD实现思路 一 预测部分 1 主干网络介绍 2 从特征获取预测结果 3 预测结果的解码 4 在原图上进行绘制 二 训
  • 2019最好用的谷歌扩展工具

    Extensions Manager 安装地址 https chrome google com webstore detail extensions manager aka sw lpleipinonnoibneeejgjnoeekmbop
  • Calendar获取想要的日期

    获取当前天的前n天 getTodayPreNDay int n 取得月第一天 getFirstDateOfMonth Date date 取得月最后一天 getLastDateOfMonth Date date 获取当前的季度 getSea
  • combineReducers()用法详解

    https www cnblogs com aurora ql p 14110920 html
  • Linux文件与目录的复制、删除与移动(cp、rm、mv)

    cp 复制文件或目录 cp adfilprsu 源文件 目标文件 cp options 源文件1 源文件2 目录 选项与参数 a 相当于 dr preserve all的意思 至于dr参考下面说明 d 若源文件为链接文件的属性 link f
  • 【转】常用性能计数器

    CPU 性能计数器说明 CPU 1 System Total Processor Time 平均CPU利用率 指处理器执行非闲置线程时间的百分比 测量处理器繁忙的时间 这个计数器设计成用来作为处理器活动的主要指示器 可以选择单个CPU实例
  • 无锁环形缓冲RingBuffer的原理及Java实现

    在多线程环境下为了保证线程安全 往往需要加锁 例如读写锁可以保证读写互斥 读读不互斥 有没有一种数据结构能够实现无锁的线程安全呢 答案就是使用RingBuffer循环队列 在Disruptor项目中就运用到了RingBuffer RingB
  • HTTP响应报文应答状态码及含义

    本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码 应该是最新最全解释最详尽的 供大家参考
  • linux服务器查找大文件及删除文件后磁盘空间没有得到释放

    1 查询服务器中大于1G的文件 find type f size 1G 这条命令是查询自 根目录下所有大小超过1G的文件 查询的大小可以根据需要改变 如下 相关查询 查询服务器中大于100M的文件 find type f size 100M
  • ubuntu重新设置root密码

    方法一 如果用户具有sudo权限 那么直接可以运行如下命令 sudo su root passwd 直接更改root密码 sudo passwd root 有关sudo su的区别 1 共同点 都是root用户的权限 2 不同点 su仅仅取
  • 训练PyTorch模型遇到显存不足的情况怎么办

    在跑代码的过程中 遇到了这个问题 当前需要分配的显存在600MiB以下 RuntimeError CUDA out of memory Tried to allocate 60 00 MiB GPU 0 10 76 GiB total ca
  • minist图片多分类问题-单层神经网络

    采用打单层隐藏层 使用TensorFlow框架 构建的分类神经网络 入门级小项目 供深度学习 TensorFlow 初学者参考 usr bin env python coding utf 8 In 导入package 读取数据 import
  • DBeaver——一款替代Navicat的数据库可视化工具

    对于很多开发者来说 Navicat这个软件并不陌生 相信这个彩虹色图标的软件 有效的帮助了你的开发工作 从前上学的时候 我都是用的都是从网上找来的密钥进行破解的 但是一直在寻找有没有一个能找到一个免费的能完美替代Navicat的工具 今天就
  • 2.5mnist手写数字识别之优化算法精讲(百度架构师手把手带你零基础实践深度学习原版笔记系列)

    2 5mnist手写数字识别之优化算法精讲 百度架构师手把手带你零基础实践深度学习原版笔记系列 目录 2 5mnist手写数字识别之优化算法精讲 百度架构师手把手带你零基础实践深度学习原版笔记系列 设置学习率 学习率的主流优化算法 设置学习
  • 机器学习——决策树剪枝

    目录 一 决策树剪枝策略 1 1剪枝目的 1 2剪枝策略 1 3判断决策树泛化性能是否提升的方法 二 预剪枝 prepruning 2 1概述 2 2预剪枝优缺点 2 3代码实现 三 后剪枝 postpruning 3 1概述 3 2后剪枝
  • MinIo 安装及其集成到java中上传下载图片信息

    MinIo 安装及其集成到java中上传下载图片信息 win 下安装 下载链接 https min io download windows 下载好后cmd打开控制台 输入 minio exe server D MinIo data 注 D