4.6 从minio上下载文件

示例是从mio上下载pdf结尾的文件

mio操作api:https://docs.min.io/docs/javascript-client-api-reference.html#fGetObject

src/config.js

module.exports = {
    endPoint: '192.168.1.3', //这里不能带http或者https
    port: 9000,
    useSSL: false, //不需要https
    accessKey: 'G2ga7dnJxg7M24C8',
    secretKey: 'ch7by1y17ytbXZOowW9PMz2lF69mzElX'
}

src/run.js

使用promise解决异步

const config = require('./config')
const Minio = require('minio')

let connect = async (config,client) => {
    return new Promise((resolve, reject) => {
        let bucket_name = null
        client.listBuckets(function (err, buckets) {
            if (err) return console.log(err)
            for (let i in buckets) {
                if (buckets[i]['name'] === "fileinspection") {
                    bucket_name = buckets[i]['name']
                    break
                }
            }
            resolve(bucket_name)
        })
    })
}
let listObject = async (bucket_name, prefix,client) => {
    return new Promise( (resolve, reject) => {
        let list = []
        let stream = client.listObjectsV2(`${bucket_name}`, prefix, true, '')
        stream.on('data', function (obj) {
            list.push(obj)
        })
        stream.on('error', function (err) {
            console.log(err)
        })
        stream.on('end',function (obj){
            resolve(list)
        })
    })
}

let download = async (bucket_name,object_name,path,client)=>{
    return new Promise((resolve,reject)=>{
        client.fGetObject(bucket_name,object_name,path,function (err) {
            if (err){
                return console.log(err)
            }
            resolve('success')
        })
    })
}
(async () => {
    let s3Client = new Minio.Client(config);
    let bucket = await connect(config,s3Client)
    let list = await listObject(bucket,'3f5bd3b113354297bcf13ec321b18127',s3Client)
    for(let i of list){
        if(i['name'].endsWith('.pdf')){
            await download(bucket,i['name'],`/tmp/${i['name']}`,s3Client)
        }
    }
})()

### Java 下载 MinIO 文件并发送至前端 为了实现从MinIO服务器下载文件并通过Java应用程序将其传递给前端,可以按照如下方式构建解决方案: #### 创建Minio客户端实例 首先,在项目中引入`minio-java-sdk`依赖项以便能够操作MinIO服务。接着初始化`MinioClient`对象来连接到MinIO服务器。 ```xml <dependency> <groupId>io.minio</groupId> <artifactId|minio|version>8.5.7</artifactId> </dependency> ``` ```java // 初始化 Minio 客户端配置 MinioClient minioClient = MinioClient.builder() .endpoint("http://localhost:9000") // 替换成实际地址 .credentials("ACCESS_KEY", "SECRET_KEY") .build(); ``` #### 获取文件输入流 通过调用`GetObjectArgs`设置参数以指定要读取的对象名称以及存储桶名,从而获得该对象的数据流。 ```java InputStream fileStream; try { fileStream = minioClient.getObject( GetObjectArgs.builder().bucket(bucketName).object(objectName).build()); } catch (Exception e) { throw new RuntimeException(e); } ``` #### 将数据流传送给HTTP响应 当接收到从前端发来的请求时,需将上述得到的字节流转交给HttpServletResponse输出流,同时设定合适的MIME类型和头部信息确保浏览器能正确处理返回的内容[^1]。 ```java response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = fileStream.read(buffer)) != -1) { response.getOutputStream().write(buffer, 0, bytesRead); } fileStream.close(); response.flushBuffer(); ``` 以上代码片段展示了如何利用Java编程语言结合Spring框架特性完成从MinIO云存储平台拉取资源再推送到Web页面的过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值