11
This commit is contained in:
parent
188be38504
commit
490a9058b3
@ -9,11 +9,21 @@ const TOS_CONFIG: TOSClientConfig = {
|
||||
region: process.env.TOS_REGION || 'cn-beijing',
|
||||
bucketName: process.env.TOS_BUCKET_NAME || 'your-bucket-name',
|
||||
selfDomain: process.env.TOS_SELF_DOMAIN || 'your-domain.com', // 自定义域名
|
||||
disableSSLWarnings: true
|
||||
disableSSLWarnings: process.env.TOS_DISABLE_SSL_WARNINGS === 'true' // 通过环境变量控制
|
||||
};
|
||||
|
||||
// 创建 TOS 客户端实例
|
||||
const tosClient = new TOSClientWrapper(TOS_CONFIG);
|
||||
// 懒加载 TOS 客户端实例
|
||||
let tosClient: TOSClientWrapper | null = null;
|
||||
|
||||
/**
|
||||
* 获取TOS客户端实例(懒加载)
|
||||
*/
|
||||
function getTOSClient(): TOSClientWrapper {
|
||||
if (!tosClient) {
|
||||
tosClient = new TOSClientWrapper(TOS_CONFIG);
|
||||
}
|
||||
return tosClient;
|
||||
}
|
||||
|
||||
// 使用示例
|
||||
export class TOSService {
|
||||
@ -24,7 +34,7 @@ export class TOSService {
|
||||
static async uploadText(content: string, fileName: string): Promise<string> {
|
||||
try {
|
||||
const objectKey = `text/${Date.now()}-${fileName}`;
|
||||
return await tosClient.uploadString(content, objectKey);
|
||||
return await getTOSClient().uploadString(content, objectKey);
|
||||
} catch (error) {
|
||||
console.error('上传文本失败:', error.message);
|
||||
throw error;
|
||||
@ -37,7 +47,7 @@ export class TOSService {
|
||||
static async uploadLocalFile(filePath: string, targetPath?: string): Promise<string> {
|
||||
try {
|
||||
const objectKey = targetPath || `files/${Date.now()}-${path.basename(filePath)}`;
|
||||
return await tosClient.uploadFile(filePath, objectKey);
|
||||
return await getTOSClient().uploadFile(filePath, objectKey);
|
||||
} catch (error) {
|
||||
console.error('上传本地文件失败:', error.message);
|
||||
throw error;
|
||||
@ -51,7 +61,7 @@ export class TOSService {
|
||||
try {
|
||||
const fileName = path.basename(new URL(url).pathname) || 'downloaded-file';
|
||||
const objectKey = targetPath || `downloads/${Date.now()}-${fileName}`;
|
||||
return await tosClient.uploadFromUrl(url, objectKey);
|
||||
return await getTOSClient().uploadFromUrl(url, objectKey);
|
||||
} catch (error) {
|
||||
console.error('从URL上传文件失败:', error.message);
|
||||
throw error;
|
||||
@ -69,7 +79,7 @@ export class TOSService {
|
||||
): Promise<string> {
|
||||
try {
|
||||
const objectKey = `${folder}/${Date.now()}-${fileName}`;
|
||||
return await tosClient.uploadBytes(buffer, objectKey, contentType);
|
||||
return await getTOSClient().uploadBytes(buffer, objectKey, contentType);
|
||||
} catch (error) {
|
||||
console.error('上传Buffer失败:', error.message);
|
||||
throw error;
|
||||
@ -81,7 +91,7 @@ export class TOSService {
|
||||
*/
|
||||
static async downloadFile(objectKey: string): Promise<Buffer> {
|
||||
try {
|
||||
return await tosClient.downloadFile(objectKey);
|
||||
return await getTOSClient().downloadFile(objectKey);
|
||||
} catch (error) {
|
||||
console.error('下载文件失败:', error.message);
|
||||
throw error;
|
||||
@ -93,7 +103,7 @@ export class TOSService {
|
||||
*/
|
||||
static async deleteFile(objectKey: string): Promise<boolean> {
|
||||
try {
|
||||
return await tosClient.deleteFile(objectKey);
|
||||
return await getTOSClient().deleteFile(objectKey);
|
||||
} catch (error) {
|
||||
console.error('删除文件失败:', error.message);
|
||||
throw error;
|
||||
@ -105,7 +115,7 @@ export class TOSService {
|
||||
*/
|
||||
static async fileExists(objectKey: string): Promise<boolean> {
|
||||
try {
|
||||
return await tosClient.fileExists(objectKey);
|
||||
return await getTOSClient().fileExists(objectKey);
|
||||
} catch (error) {
|
||||
console.error('检查文件存在性失败:', error.message);
|
||||
throw error;
|
||||
@ -117,7 +127,7 @@ export class TOSService {
|
||||
*/
|
||||
static async getFileInfo(objectKey: string): Promise<any> {
|
||||
try {
|
||||
return await tosClient.getFileInfo(objectKey);
|
||||
return await getTOSClient().getFileInfo(objectKey);
|
||||
} catch (error) {
|
||||
console.error('获取文件信息失败:', error.message);
|
||||
throw error;
|
||||
@ -129,7 +139,7 @@ export class TOSService {
|
||||
*/
|
||||
static async generateTempUrl(objectKey: string, expires: number = 3600): Promise<string> {
|
||||
try {
|
||||
return await tosClient.generateUrl(objectKey, expires);
|
||||
return await getTOSClient().generateUrl(objectKey, expires);
|
||||
} catch (error) {
|
||||
console.error('生成临时URL失败:', error.message);
|
||||
throw error;
|
||||
@ -140,7 +150,7 @@ export class TOSService {
|
||||
* 获取公开访问URL
|
||||
*/
|
||||
static getPublicUrl(objectKey: string): string {
|
||||
return tosClient.getBaseUrl(objectKey);
|
||||
return getTOSClient().getBaseUrl(objectKey);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -148,7 +158,7 @@ export class TOSService {
|
||||
*/
|
||||
static async listFiles(prefix?: string, maxKeys: number = 100): Promise<any[]> {
|
||||
try {
|
||||
return await tosClient.listObjects(prefix, maxKeys);
|
||||
return await getTOSClient().listObjects(prefix, maxKeys);
|
||||
} catch (error) {
|
||||
console.error('列出文件失败:', error.message);
|
||||
throw error;
|
||||
@ -156,8 +166,8 @@ export class TOSService {
|
||||
}
|
||||
}
|
||||
|
||||
// 导出客户端实例和服务类
|
||||
export { tosClient, TOSClientWrapper };
|
||||
// 导出客户端实例获取函数和服务类
|
||||
export { getTOSClient as tosClient, TOSClientWrapper };
|
||||
export default TOSService;
|
||||
|
||||
// 使用示例代码
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user