本文转自: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. mac 命令行安装软件

    第一步需要在mac上安装brew工具 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mas ...

  2. web专业课学习及往后方向发展

    日常10点起床!!!! web主要是网页设计,目前自我方向是学习web前端开发,熟悉掌握相关的编辑应用已达到能设计出满意的网页,日后继续学习后端等 ,成为全栈工程师.

  3. Android中RecyclerView出现java.lang.IndexOutOfBoundsException

    在RecyclerView更细数据时出现java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder ...

  4. jquery跨域方法

    $.ajax({ type: 'get', dataType: "jsonp",//支持跨域 jsonp: "callback", jsonpCallback: ...

  5. repo 用法

    repo的用法(zz) 注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载.管理Android项目的软件仓库.(也就是说,他是用来管理给git管理的一个个仓库的) ...

  6. Python基础理论 - 常用模块

    time模块:时间戳.时间字符串.时间对象以及如何转换 random模块:随机小数.整数.区间,随机列表元素,打散列表 os模块:与操作系统交互的一个接口,os.path操作文件的路径 sys模块:s ...

  7. 背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知)

    [源码下载] 背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知) 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 ...

  8. 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结

    本文原作者“ manong”,原创发表于segmentfault,原文链接:segmentfault.com/a/1190000006158186 1.引言   MySQL作为开源技术的代表作之一,是 ...

  9. 致我们再也回不去的 Github ...

    本文原文来自公众号 stormzhang,原作者自称“二流学校毕业.非科班出身.从 0 自学编程到现在的「段子张」”. 1.前言   相信大家都知道了,微软已确认要收购 GitHub 了,Github ...

  10. ActiveMQ 的安装与使用

    消息中间件简介 消息中间件(MOM:Message Orient middleware) 消息中间件有很多的用途和优点: 1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外 ...