From bffc659f85f41844bf5a93681e443efde1555eaf Mon Sep 17 00:00:00 2001 From: overtrue Date: Fri, 27 Dec 2024 20:16:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9B=E5=BB=BA=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=A1=B6=20&=20=E5=88=A0=E9=99=A4=E5=AF=B9=E8=B1=A1=20&=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E6=97=B6=E8=B7=AF=E5=BE=84=E6=8B=BC=E6=8E=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 1 + components/buckets/new-form.vue | 55 +++++++++++++++++++++++++++++ components/buckets/new-item.vue | 7 ---- components/object/list.vue | 4 +-- components/object/upload/picker.vue | 47 ++++++++++++++++-------- components/object/view.vue | 19 ++++++++++ composables/useBucket.ts | 21 ++++++++--- config/navs.ts | 7 +--- pages/browser/index.vue | 17 ++++++--- pages/buckets/index.vue | 53 --------------------------- 10 files changed, 139 insertions(+), 92 deletions(-) create mode 100644 components/buckets/new-form.vue delete mode 100644 components/buckets/new-item.vue delete mode 100644 pages/buckets/index.vue diff --git a/components.d.ts b/components.d.ts index 449b9a1..5b1d3db 100644 --- a/components.d.ts +++ b/components.d.ts @@ -41,6 +41,7 @@ declare module 'vue' { NModal: typeof import('naive-ui')['NModal'] NNotificationProvider: typeof import('naive-ui')['NNotificationProvider'] NPageHeader: typeof import('naive-ui')['NPageHeader'] + NPopconfirm: typeof import('naive-ui')['NPopconfirm'] NProgress: typeof import('naive-ui')['NProgress'] NSelect: typeof import('naive-ui')['NSelect'] NSpace: typeof import('naive-ui')['NSpace'] diff --git a/components/buckets/new-form.vue b/components/buckets/new-form.vue new file mode 100644 index 0000000..2c7ec84 --- /dev/null +++ b/components/buckets/new-form.vue @@ -0,0 +1,55 @@ + + + diff --git a/components/buckets/new-item.vue b/components/buckets/new-item.vue deleted file mode 100644 index 677f24b..0000000 --- a/components/buckets/new-item.vue +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/components/object/list.vue b/components/object/list.vue index 24a323f..d7a1814 100644 --- a/components/object/list.vue +++ b/components/object/list.vue @@ -101,7 +101,7 @@ const columns = [ { key: 'Key', title: '对象', render: (row: { Key: string, type: 'prefix' | 'object' }) => { const displayKey = prefix.value ? row.Key.substring(prefix.value.length) : row.Key - let label: string | VNode = displayKey || '根目录' + let label: string | VNode = displayKey || '/' if (row.type === 'prefix') { label = h('span', { class: 'inline-flex items-center gap-2' }, [icon('ri:folder-line'), label]) @@ -109,7 +109,7 @@ const columns = [ const keyInUri = row.Key - return h(NuxtLink, { href: bucketPath(keyInUri) }, label) + return h(NuxtLink, { href: bucketPath(keyInUri), class: 'block text-cyan-400' }, label) } }, { key: 'Size', title: '大小', render: (row: { Size: number }) => row.Size ? formatBytes(row.Size) : '' }, diff --git a/components/object/upload/picker.vue b/components/object/upload/picker.vue index da2e94b..5b15bcd 100644 --- a/components/object/upload/picker.vue +++ b/components/object/upload/picker.vue @@ -65,16 +65,22 @@ diff --git a/composables/useBucket.ts b/composables/useBucket.ts index d31b5f3..348eed2 100644 --- a/composables/useBucket.ts +++ b/composables/useBucket.ts @@ -1,6 +1,19 @@ -import {} from '@aws-sdk/client-s3'; -import { getSignedUrl as _getSignedUrl } from '@aws-sdk/s3-request-presigner'; +import { CreateBucketCommand, ListBucketsCommand } from '@aws-sdk/client-s3'; -export function useBucket({ bucket, region }: { bucket: string; region?: string }) { - return {}; +export function useBucket({ region }: { region?: string }) { + const $client = useNuxtApp().$s3Client + + const listBuckets = async () => { + return await $client.send(new ListBucketsCommand({})) + } + + const createBucket = async (bucket: string) => { + const params = { + Bucket: bucket, + } + + return await $client.send(new CreateBucketCommand(params)) + } + + return { listBuckets, createBucket }; } diff --git a/config/navs.ts b/config/navs.ts index 2680477..1f24479 100644 --- a/config/navs.ts +++ b/config/navs.ts @@ -10,15 +10,10 @@ export default [ icon: 'ri:file-user-line', children: [ { - label: '对象浏览器', + label: '存储桶', to: '/browser', icon: 'ri:box-3-line', }, - { - label: '存储桶', - to: '/buckets', - icon: 'ri:archive-drawer-line', - }, { label: '访问密钥', to: '/access-keys', diff --git a/pages/browser/index.vue b/pages/browser/index.vue index cee727b..bbffbd8 100644 --- a/pages/browser/index.vue +++ b/pages/browser/index.vue @@ -2,10 +2,10 @@
diff --git a/pages/buckets/index.vue b/pages/buckets/index.vue deleted file mode 100644 index fe08433..0000000 --- a/pages/buckets/index.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - -