ts-api-core
Version:
Nodejs api framework core
161 lines (160 loc) • 5.49 kB
TypeScript
/// <reference types="node" />
import { BaseObject } from '../../context/base.object';
import { RequestContext } from '../../context/request.context';
import { IOssConfig } from '../../database/db.oss.config';
/**
* oss 选项信息
*/
export interface OSSOptions {
/**
* 凭证id
*/
accessKeyId: string;
/**
* 凭证secret
*/
accessKeySecret: string;
/**
* bucket所在region
*/
region: string;
/**
* 临时凭证
*/
stsToken?: string;
/**
* bucket
*/
bucket: string;
endpoint?: string;
}
export declare class OssObjectDTO {
etag: string;
name: string;
size: number;
type: string;
url: string;
}
/** 阿里云 OSS 服务类 */
export declare class OssAccess extends BaseObject<RequestContext> implements IOssAccess {
private _alioss;
private _oss;
readonly config: OSSOptions;
private get oss();
private get alioss();
/**
* 阿里云 OSS 管理服务类
* @param context 上下文对象
* @param accessKeyId 凭证id
* @param accessKeySecret 凭证secret
* @param region bucket所在region
* @param bucket bucket
*/
constructor(context: RequestContext, config: IOssConfig);
/**
* 把文件从一个bucket搬移到另外一个bucket 文件名称保持不变
* @param fileName 文件名称
* @param fromBucket 源bucket
*/
move(fileName: string, fromBucket: string): Promise<boolean>;
/**
* 从bucket里面删除一个文件
* @param fileName 文件名称
*/
remove(fileName: string): Promise<boolean>;
/**
* 上传文件
* @param fileName 上传到bucket的文件名称
* @param localFile 本地文件的路径
*/
upload(fileName: string, localFile: string): Promise<boolean>;
/**
* 流式上传
* @param fileName 上传到bucket的文件名称
* @param stream NodeJS.ReadableStream 流
*/
uploadStream(fileName: string, stream: NodeJS.ReadableStream): Promise<boolean>;
/**
* 流式上传指定 url
* @param fileName 上传到bucket的文件名称
* @param url 来源数据URL
* @returns 返回上传的数据大小
*/
uploadUrlDownload(fileName: string, url: string | undefined): Promise<number>;
/**
* 上传内存数据
* @param fileName 上传到bucket的文件名称
* @param buffer Buffer 数据, new Buffer("xxx")
*/
uploadBuffer(fileName: string, buffer: Buffer): Promise<boolean>;
/** 获取下载地址 */
getDownloadUrl(fileName: string): string;
/**
* 获取指定路径下所有文件名
* @param path 文件路径,如果指定,需要 "/" 结尾
* @returns
*/
getFileList(path: string): Promise<OssObjectDTO[]>;
/**
* 获取oss上传临时凭证
* @param roleArn oss角色,在阿里云账号中心可以找到
* @param expire 凭证有效期 单位秒 调用方应该把这个凭证缓存起来,不用每次都获取新的token 最小 900秒,最大3600秒
* @param session 应用名称
*/
getStsToken(roleArn: string, expire?: number, session?: string): Promise<OSSOptions>;
}
/** 阿里云 OSS 数据通道 */
export interface IOssAccess {
readonly config: IOssConfig;
/**
* 把文件从一个bucket搬移到另外一个bucket 文件名称保持不变
* @param fileName 文件名称
* @param fromBucket 源bucket
*/
move: (fileName: string, fromBucket: string) => Promise<boolean>;
/**
* 从bucket里面删除一个文件
* @param fileName 文件名称
*/
remove: (fileName: string) => Promise<boolean>;
/**
* 上传文件
* @param fileName 上传到bucket的文件名称
* @param localFile 本地文件的路径
*/
upload: (fileName: string, localFile: string) => Promise<boolean>;
/**
* 流式上传
* @param fileName 上传到bucket的文件名称
* @param stream NodeJS.ReadableStream 流
*/
uploadStream: (fileName: string, stream: NodeJS.ReadableStream) => Promise<boolean>;
/**
* 流式上传指定 url
* @param fileName 上传到bucket的文件名称
* @param url 来源数据URL
* @returns 返回上传的数据大小
*/
uploadUrlDownload: (fileName: string, url: string | undefined) => Promise<number>;
/**
* 上传内存数据
* @param fileName 上传到bucket的文件名称
* @param buffer Buffer 数据, new Buffer("xxx")
*/
uploadBuffer: (fileName: string, buffer: Buffer) => Promise<boolean>;
/** 获取下载地址 */
getDownloadUrl: (fileName: string) => string;
/**
* 获取指定路径下所有文件名
* @param path 文件路径,如果指定,需要 "/" 结尾
* @returns
*/
getFileList: (path: string) => Promise<OssObjectDTO[]>;
/**
* 获取oss上传临时凭证
* @param roleArn oss角色,在阿里云账号中心可以找到
* @param expire 凭证有效期 单位秒 调用方应该把这个凭证缓存起来,不用每次都获取新的token 最小 900秒,最大3600秒
* @param session 应用名称
*/
getStsToken: (roleArn: string, expire?: number, session?: string) => Promise<OSSOptions>;
}