///
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;
/**
* 检查对象是否存在
*/
isExistObject(bucket: string, key: string, endpoint?: string, pathStyle?: boolean): Promise;
/**
* 获取文件访问 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;
bucket: string;
key: string;
eTag: string;
}>;
/**
* 中止分片上传
*/
abortMultipartUpload(bucket: string, key: string, uploadId: string, endpoint?: string): Promise;
/**
* 列出已上传的分片
*/
listParts(bucket: string, key: string, uploadId: string, endpoint?: string, maxParts?: number): Promise<{
parts: {
partNumber: number;
eTag: string;
size: number;
lastModified: Date;
}[];
isTruncated: boolean;
nextPartNumberMarker: string;
}>;
/**
* 获取预签名 URL(通用方法)
*/
getSignedUrl(bucket: string, key: string, operation?: 'get' | 'put', expiresIn?: number, endpoint?: string): Promise;
/**
* 获取预签名对象URL(统一接口)
*/
presignObjectUrl(method: 'GET' | 'PUT' | 'POST' | 'DELETE', bucket: string, zone: S3Zone, key: string, options?: {
expires?: number;
endpoint?: string;
}): Promise<{
url: string;
headers?: Record;
formdata?: Record;
}>;
}