import * as Minio from 'minio'; import { IMinioConfig } from '../interface'; import { BucketItemStat } from 'minio'; export declare class MinioClient { cfg: IMinioConfig; client: Minio.Client; bucketExist: boolean; constructor(config: IMinioConfig); getPolicyStr(bucket: string, type: string): string; assertBucketExist(): Promise; getHostUrl(): string; getPrefixUrl(): string; /** * 创建bucket * 约定: 小写驼峰,通过 . 分级, 最后一个数是有效期,未填写则永不删除 * @param bktName * @param opts */ mngMakeBucket(bktName: string, opts?: { region?: string; }): Promise; getBucketPolicy(bktName?: string): Promise; /** * 设置bucket get访问无需鉴权 */ setBucketPolicyGetFree(bktName?: string): Promise; setBucketPolicy(params: { policy: string; bktName?: string; }): Promise; /** * 设置bucket生命周期 * @param bktName * @param opts */ mngSetBucketLifecycle(bktName: string, opts?: { expirationDays?: number; }): Promise; deleteOssFileOrDir(ossPath: string): Promise; deleteOssFile(ossPath: string): Promise; deleteOssDir(ossPath: string): Promise; /** * 获取文件夹下的所有文件path * @param ossPath * @param recursive */ getOssFilesInfo(ossPath: string, recursive?: boolean): Promise<{}[]>; /** * 读取Oss文件为str * @param ossFile * @param opts */ getStr(ossFile: string, opts?: { versionId?: string; SSECustomerAlgorithm?: string; SSECustomerKey?: string; SSECustomerKeyMD5?: string; }): Promise; /** * 读取JSON文件, 不存在时返回 {} * @param ossFile */ getJSON(ossFile: string): Promise; putJSON(obj: any, ossFile: string): Promise; putStr(str: string, ossFile: string): Promise; /** * key-json对象存储,有新值则更新 * 返回存储值 * @param key * @param obj * @param merge 是否合并,默认替换 */ store(key: string, obj?: object, merge?: boolean): Promise; /** * 上传单个文件, 未指定oss文件时上传为临时文件 * 上传重复位置会覆盖旧文件 * @param localFile * @param ossFile oss文件, */ uploadFile(localFile: string, ossFile?: string): Promise; /** * 上传文件从url获取文件转存oss * @param url * @param ossFile */ uploadUrl(url: string, ossFile?: string): Promise; downloadFile(ossFile: string, localFile: string): Promise; /** * 获取临时访问链接, 默认一小时有效 * 使用场景: private的bucket,生成临时访问链接 * @param ossFile * @param expires */ getTmpUrl(ossFile: string, expires?: number): Promise; /** * 检查 MinIO 中文件是否存在 * @param {string} ossFile - 文件路径(例如:'docs/file.txt') * @return {Promise} 是否存在 */ isOssFileExists(ossFile: string): Promise; /** * 检查 MinIO 中文件夹是否存在(模拟的文件夹前缀) * @param {string} ossDir - 文件夹前缀(需以 / 结尾,例如:'docs/reports/') * @return {Promise} 是否存在 */ isOssDirExists(ossDir: string): Promise; /** * 检查 MinIO 中文件或文件夹是否存在(自动判断类型) * @param {string} ossFile - 文件或文件夹路径(文件夹建议以 / 结尾) * @return {Promise<{exists: boolean, type: 'file'|'folder'|null}>} 存在性及类型 */ ossExist(ossFile: string): Promise<{ exists: boolean; type: string; }>; uploadDirZip(localPath: string, ossFile: string): Promise; /** * 压缩本地文件夹,上传到oss * @param localPath * @param ossFile */ uploadDirTarGz(localPath: string, ossFile: string): Promise; /** * 上传整个文件夹 * @param localPath * @param ossDir */ uploadDir(localPath: string, ossDir: string): Promise; /** * 下载oss上的一个文件夹 * @param ossDir * @param destDir */ downloadDir(ossDir: string, destDir: string): Promise; /** * 获取对象Meta信息 * @param ossFile */ getObjectInfo(ossFile: string): Promise; }