示例是从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)
}
}
})()