本文转自:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678

一、获取Minio连接
    public static String minioUrl;    
    public static String minioUsername; 
    public static String minioPassword; 
    @Value("${system.minioUrl}")  
    private String minioUrlTmp;
    
    @Value("${system.minioUsername}")  
    private String minioUsernameTmp;
    
    @Value("${system.minioPassword}")  
    private String minioPasswordTmp;

@PostConstruct  
    public void init() {  
        minioUrl = minioUrlTmp;  
        minioUsername = minioUsernameTmp;
        minioPassword = minioPasswordTmp;
    }  
    
    
    
    public static MinioClient getInstance() {
        if (minioClient == null) {  
            synchronized (FileUtils.class) {  
                if (minioClient == null) {  
                    try {
                        //new FileUtils(); 
                        minioClient = new MinioClient(minioUrl,minioUsername,minioPassword);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }  
            }  
        }  
        return minioClient;  
    }

二、读取文件流

InputStream in = null;
        OutputStream out = null;
        ExamineFileList examineFileList = examineFileListRepository.findOne(guid);
        MinioClient minioClient = FileUtils.getInstance();
        try {
            in = minioClient.getObject(examineFileList.getFileDirectory(), examineFileList.getFilePath()+examineFileList.getFileNameUuid());
            int len = 0;
            byte[] buffer = new byte[1024];
            out = response.getOutputStream();
            response.reset();
            response.addHeader("Content-Disposition",    
                    " attachment;filename=" + new String(examineFileList.getFileName().getBytes(),"iso-8859-1"));
            response.setContentType("application/octet-stream");
            while ((len = in.read(buffer)) > 0) {
               out.write(buffer, 0, len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null){
               try {
                  in.close();
               } catch (Exception e) {
                  throw new RuntimeException(e);
               }
            }
            if (out != null) {
               try {
                   out.close();
                } catch (IOException e) {
                   e.printStackTrace();
                }
            }
        }
---------------------
作者:ZHANGLIZENG
来源:CSDN
原文:https://blog.csdn.net/ZHANGLIZENG/article/details/82892678
版权声明:本文为博主原创文章,转载请附上博文链接!

[转]从minio中读取文件流进行下载文件的更多相关文章

  1. 通过文件流stream下载文件

    public ActionResult ShowLocalizedXML(int id) { string orderName = ""; string xmlString = G ...

  2. C#项目实例中读取并修改App.config文件

    C#项目是指一系列独特的.复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间.预算.资源限定内,依据规范完成.项目参数包括项目范围.质量.成本.时间.资源. 1. 向C#项目实 ...

  3. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

  4. js接收文件流并下载

    js接收文件流并下载 标签(空格分隔): js 在此输入正文 <script type="text/javascript"> function download(fil ...

  5. ASP.NET Core 返回文件、用户下载文件,从网站下载文件,动态下载文件

    ASP.NET Core 中,可以在静态目录添加文件,直接访问就可以下载.但是这种方法可能不安全,也不够灵活. 我们可以在 Controller 控制器中 添加 一个 Action,通过此Action ...

  6. C# Path类 FileStream(文件流) 与 File(文件) 读取的区别

    1.采用文件流读取数据是一点一点从文件中读取数据对内存的压力相对较小;而采用文件读取数据是一下全部读取过来对内存造成的压力相对较大 2.File读取: string str = @"E:\Q ...

  7. 在.NET中读取嵌入和使用资源文件的方法

    转http://www.jb51.net/article/84660.htm 本文分别介绍了使用GetManifestResourceStream读取嵌入资源,和使用. resx资源文件嵌入资源,希望 ...

  8. Java中使用IO流实现大文件的分裂与合并

    文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分 ...

  9. C++文件流类与文件流对象

    文件流是以外存文件为输入输出对象的数据流.输出文件流是从内存流向外存文件的数据,输入文件流是从外存文件流向内存的数据.每一个文件流都有一个内存缓冲区与之对应. 请区分文件流与文件的概念,不用误以为文件 ...

随机推荐

  1. jquery综合

    1.选择器性能比较: http://www.jcodecraeer.com/a/javascript/2012/0418/112.html http://developer.51cto.com/art ...

  2. 《java从入门到精通》学习记录

    目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...

  3. gc的real时间比user时间长

    https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 htt ...

  4. python 初级重点

    关于python初学时遇到的重点: 1 python 2 和3 的区别 python2**不识别中文** -*- coding: utf-8 -*-(因为不能识别中文,所以代码有中文时需要在最前面加入 ...

  5. 《python语言程序设计》_第4章_选择

    第四章 # 4.1 引言 布尔表达式:选择语句选择的条件. 程序: import math #加载math模块radius=eval(input("Enter an integer:&quo ...

  6. The test form is only available for requests from the local machine

    使用浏览器测试Web服务时出现提示“The test form is only available for requests from the local machine.”的解决办法 在Web服务项 ...

  7. Java安全编码:糟糕的在线建议和令人困惑的APIs

    对于程序员和软件开发人员来说,网络论坛提供了一个交流知识和寻找具体编码难题答案的好地方.遗憾的是,他们并不总是准确信息的来源. 弗吉尼亚理工大学的一组研究人员分析了数百篇关于Stack Overflo ...

  8. kaldi运行thchs30例子

    首先,thchs30有两种数据库,kaldi运行的数据库最好是 thchs30-openslr. 修改run.sh里面的语音库路径  thchs30=... 修改nj线程数 等于CPU的核心数 修改c ...

  9. 大叔学ML第一:梯度下降

    目录 原理 实践一:求\(y = x^2 - 4x + 1\)的最小值 实践二:求\(z = x^2 + y^2 + 5\)的最小值 问答时间 原理 梯度下降是一个很常见的通过迭代求解函数极值的方法, ...

  10. 控制页面打印的2种方法(css3的media媒体查询和window.print())

    在实际开发中,有时可能会有打印的需求.下面我总结了2种打印的方法,希望对各位小伙伴有所帮助. ①:直接用window.print()方法就可以打印整个页面,下面是一个小demo <!DOCTYP ...