123 lines
3.9 KiB
TypeScript
123 lines
3.9 KiB
TypeScript
import { S3Zone } from '../../types';
|
||
export declare class S3Instance {
|
||
private accessKey;
|
||
private secretKey;
|
||
private client;
|
||
private defaultEndpoint?;
|
||
private defaultRegion;
|
||
constructor(accessKey: string, secretKey: string, endpoint?: string, region?: S3Zone);
|
||
private createClient;
|
||
/**
|
||
* 获取上传信息(预签名 URL)
|
||
*/
|
||
getUploadInfo(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise<{
|
||
key: string;
|
||
uploadUrl: string;
|
||
bucket: string;
|
||
accessKey: string;
|
||
}>;
|
||
/**
|
||
* 删除文件
|
||
*/
|
||
removeFile(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise<void>;
|
||
/**
|
||
* 检查对象是否存在
|
||
*/
|
||
isExistObject(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise<boolean>;
|
||
/**
|
||
* 获取文件访问 URL
|
||
*/
|
||
getFileUrl(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): string;
|
||
/**
|
||
* 创建分片上传
|
||
*/
|
||
createMultipartUpload(bucket: string, key: string, endpoint?: string, contentType?: string): Promise<{
|
||
uploadId: string;
|
||
bucket: string;
|
||
key: string;
|
||
}>;
|
||
/**
|
||
* 为分片上传生成预签名 URL
|
||
* @param bucket 桶
|
||
* @param key 对象键
|
||
* @param uploadId 上传 ID
|
||
* @param from 起始分片号
|
||
* @param to 结束分片号
|
||
* @param options 配置项
|
||
* @returns 分片预签名 URL 列表
|
||
*/
|
||
presignMulti(bucket: string, key: string, uploadId: string, from: number, to: number, options?: {
|
||
endpoint?: string;
|
||
expiresIn?: number;
|
||
}): Promise<{
|
||
partNumber: number;
|
||
uploadUrl: string;
|
||
}[]>;
|
||
/**
|
||
* 准备分片上传(创建分片上传并生成所有分片的预签名URL)
|
||
* 用于前端直传场景,返回 uploadId 和每个分片的上传 URL
|
||
*/
|
||
prepareMultipartUpload(bucket: string, key: string, partCount: number, options?: {
|
||
endpoint?: string;
|
||
contentType?: string;
|
||
expiresIn?: number;
|
||
}): Promise<{
|
||
uploadId: string;
|
||
parts: {
|
||
partNumber: number;
|
||
uploadUrl: string;
|
||
}[];
|
||
}>;
|
||
/**
|
||
* 上传分片
|
||
*/
|
||
uploadPart(bucket: string, key: string, uploadId: string, partNumber: number, body: Buffer | Uint8Array | string, endpoint?: string): Promise<{
|
||
partNumber: number;
|
||
eTag: string;
|
||
}>;
|
||
/**
|
||
* 完成分片上传
|
||
*/
|
||
completeMultipartUpload(bucket: string, key: string, uploadId: string, parts: Array<{
|
||
partNumber: number;
|
||
eTag: string;
|
||
}>, endpoint?: string): Promise<{
|
||
location: string | undefined;
|
||
bucket: string;
|
||
key: string;
|
||
eTag: string | undefined;
|
||
}>;
|
||
/**
|
||
* 中止分片上传
|
||
*/
|
||
abortMultipartUpload(bucket: string, key: string, uploadId: string, endpoint?: string): Promise<void>;
|
||
/**
|
||
* 列出已上传的分片
|
||
*/
|
||
listParts(bucket: string, key: string, uploadId: string, endpoint?: string, maxParts?: number): Promise<{
|
||
parts: {
|
||
partNumber: number;
|
||
eTag: string;
|
||
size: number;
|
||
lastModified: Date | undefined;
|
||
}[];
|
||
isTruncated: boolean | undefined;
|
||
nextPartNumberMarker: string | undefined;
|
||
}>;
|
||
/**
|
||
* 获取预签名 URL(通用方法)
|
||
*/
|
||
getSignedUrl(bucket: string, key: string, operation?: 'get' | 'put', expiresIn?: number, endpoint?: string): Promise<string>;
|
||
/**
|
||
* 获取预签名对象URL(统一接口)
|
||
*/
|
||
presignObjectUrl(method: 'GET' | 'PUT' | 'POST' | 'DELETE', bucket: string, zone: S3Zone | undefined, key: string, options?: {
|
||
expires?: number;
|
||
endpoint?: string;
|
||
}): Promise<{
|
||
url: string;
|
||
headers?: Record<string, string | string[]>;
|
||
formdata?: Record<string, any>;
|
||
}>;
|
||
}
|