根据minio地址,下载文件流

下载文件转流一

public void downloadPdf(HttpServletResponse response) {
    try {
        String fileName = minioPdfConfig.getFileName();

        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 拼写文件下载信息
        String downloadApi = String.format(ChinaTowerApiConstants.FILE_DOWNLOAD,
                minioPdfConfig.getBucketName(), fileName);
// 下载文件并转成字节
        byte[] buffer = HttpUtil.downloadBytes(chinaTowerConfig.getMinioUrl() + downloadApi);

        // 清空response
        response.reset();
        try {
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw new BaseException(e.getMessage());
    }
}

下载文件转流2

    public void downloadPdf(HttpServletResponse httpServletResponse) throws IOException {
        RequestBody emptyRequestBody = RequestBody.create(null, new byte[0]);
        OkHttpClient okHttpClient = new OkHttpClient();
        String fileName = minioPdfConfig.getFileName();
        String downloadApi = String.format("/ChinatowerFile/download/%s/%s",
                minioPdfConfig.getBucketName(), fileName);
        // return chinaTowerConfig.getMinioUrl() + downloadApi;
        Request request = new Request.Builder().url(chinaTowerConfig.getMinioUrl()+downloadApi).post(emptyRequestBody).build();
        Response response = okHttpClient.newCall(request).execute();
        if(200 != response.code()){
            throw new BaseException("文件下载失败");
        }
        InputStream inputStream = response.body().byteStream();
        // 创建 ByteArrayOutputStream 用于收集所有读取的字节
        ServletOutputStream outputStream = httpServletResponse.getOutputStream();
        byte[] buffer = new byte[1024];
        int bytesRead;
        // 读取 InputStream 并写入 ByteArrayOutputStream
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
    }

直接返回url下载

    public String downloadPdf() {
        String fileName = minioPdfConfig.getFileName();
        String downloadApi = String.format("/ChinatowerFile/download/%s/%s",
                minioPdfConfig.getBucketName(), fileName);
        return chinaTowerConfig.getMinioUrl() + downloadApi;
    }

### 使用 MinIO 对象存储服务下载文件 为了通过 MinIO 下载文件,可以利用 `mc` (MinIO 客户端),这是一个功能强大的命令行工具,提供了类似于 UNIX 命令的功能,如 `ls`, `cat`, 和 `cp` 的操作[^5]。 #### 方法一:使用 mc cp 命令复制对象到本地 要从 MinIO 存储桶中下载单个文件或整个目录结构,可采用如下方式: ```bash # 将指定路径下的单一文件下载至当前工作目录下 mc cp myminio/bucketname/path/to/object.txt ./localfile.txt # 或者批量转移多个项目 mc mirror --watch myminio/bucketname/localdir /path/to/target/ ``` 上述命令中的 `myminio` 是指代配置好的远程主机别名;而 `/bucketname/...` 则代表目标资源的具体定位符。对于希望持续同步最新更改的情况,则应附加参数 `--watch` 来实现自动更新机制。 #### 方法二:借助 mc cat 查看并导出数据流 另一种方法是运用 `mc cat` 功能读取远端文件内容并通过管道重定向保存成本地副本: ```bash mc cat myminio/bucketname/file | tee localcopy ``` 此法适用于处理较小规模的数据集或是仅需预览部分记录的情形。 #### 配置环境准备 在执行以上任一方案前,请先完成必要的前期准备工作——安装 MinIO CLI 并建立与目标实例之间的连接关系。这通常涉及获取访问凭证以及定义相应的 alias 地址等步骤。 ```bash # 添加新的站点别名 mc alias set myminio http://localhost:9000 ACCESS_KEY SECRET_KEY ``` 确保替换示例 URL 及密钥组合为实际有效的认证信息以便顺利通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值