From 151a74fad1e33d6f7d0214cbce471c6ca8d20845 Mon Sep 17 00:00:00 2001 From: abearxiong Date: Sun, 1 Feb 2026 17:37:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20listObjects=20?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E7=9A=84=20getMeta=20=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E4=BB=A5=E8=8E=B7=E5=8F=96=E5=AF=B9=E8=B1=A1=E5=85=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/s3/core.ts | 15 +++++++++++---- src/s3/type.ts | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 05b79f7..13b0d69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kevisual/oss", - "version": "0.0.18", + "version": "0.0.19", "main": "dist/index.js", "scripts": { "build": "bun run bun.config.ts" diff --git a/src/s3/core.ts b/src/s3/core.ts index 81351b4..6bdb709 100644 --- a/src/s3/core.ts +++ b/src/s3/core.ts @@ -258,12 +258,12 @@ export class OssBase implements OssBaseOperation { */ async listObjects( objectName: string, - opts?: { recursive?: boolean; startAfter?: string; maxKeys?: number }, + opts?: { recursive?: boolean; startAfter?: string; maxKeys?: number, getMeta?: boolean }, ): Promise { const prefix = `${this.prefix}${objectName}`; const results: ListObjectResult[] = []; let continuationToken: string | undefined; - + const getMeta = opts?.getMeta ?? false; do { const command = new ListObjectsV2Command({ Bucket: this.bucketName, @@ -279,12 +279,19 @@ export class OssBase implements OssBaseOperation { // 处理文件对象 if (response.Contents) { for (const item of response.Contents) { - results.push({ + const result: ListFileObject = { name: item.Key || '', size: item.Size || 0, lastModified: item.LastModified || new Date(), etag: item.ETag?.replace(/"/g, '') || '', - }); + } + if (getMeta) { + const stat = await this.statObject(item.Key || '', false); + if (stat?.metaData) { + result.metaData = stat.metaData; + } + } + results.push(result); } } diff --git a/src/s3/type.ts b/src/s3/type.ts index a8978d0..67ade30 100644 --- a/src/s3/type.ts +++ b/src/s3/type.ts @@ -31,6 +31,7 @@ export type ListFileObject = { size: number; lastModified: Date; etag: string; + metaData?: ItemBucketMetadata; }; export type ListDirectoryObject = {