Rumah >pembangunan bahagian belakang >Golang >AWS S3 ListObjectsV2 mengembalikan 'folder' sebagai objek

AWS S3 ListObjectsV2 mengembalikan 'folder' sebagai objek

WBOY
WBOYke hadapan
2024-02-08 20:53:49725semak imbas

AWS S3 ListObjectsV2 返回“文件夹”作为对象

Kandungan soalan

Saya cuba menyenaraikan semua fail di bawah direktori tertentu dalam baldi s3 (saya tahu s3 sebenarnya tidak mempunyai direktori.).

Strukturnya ialah:

bucket-名称:folder1/folder2/folder3/file

Jadi dalam dunia s3 saya percaya ini hanya menyimpan fail yang dipanggil di atas.

Ini kod saya:

params := &s3.listobjectsv2input{
        bucket: aws.string(os.getenv("s3_user_bucket")),
        prefix: aws.string(key + loc[0] + "/"),
    }

    resp, _ := svc.listobjectsv2(params)

resp mengandungi fail yang saya harapkan, dan "direktori" ia disimpan dalam:

contents: [{
      etag: "\"tag\"",
      key: "folder1/folder2/folder3/",
      lastmodified: 2023-03-02 17:32:17 +0000 utc,
      size: 0,
      storageclass: "standard"
    },{
      etag: "\"tag\"",
      key: "folder1/folder2/folder3/file",
      lastmodified: 2023-03-02 17:32:30 +0000 utc,
      size: 106808,
      storageclass: "standard"
    }],
  istruncated: false,
  keycount: 2,
  maxkeys: 1000,
  name: "bucket",
  prefix: "folder1/folder2/folder3/"
}

Saya juga mencuba:

params := &s3.listobjectsv2input{
        bucket: aws.string(os.getenv("s3_user_bucket")),
        prefix: aws.string(key + loc[0] + "/"),
        delimiter: aws.string("/"),
    }

    resp, _ := svc.listobjectsv2(params)

Tetapi hasilnya tetap sama.

Ini adalah hasil daripada parameter:

Params:  {
  Bucket: "BUCKET",
  Prefix: "Folder1/Folder2/Folder3/"
}

Jawapan betul


Saya andaikan anda bertanya mengapa terdapat direktori yang dikembalikan sebagai objek.

Anda betul sekali, amazon s3 tidak menggunakan direktori. Sebaliknya, nama fail objek (key) ialah laluan penuh, termasuk nama fail. Tidak perlu mencipta direktori sebelum mencipta objek pada laluan tertentu.

Namun, jika seseorang mengklik butang Buat Folder dalam konsol pengurusan s3, ia akan mencipta objek sifar panjangdengan nama direktori. Ini "memaksa" direktori untuk muncul (kerana terdapat objek di dalamnya), tetapi ia sebenarnya objek panjang sifar.

Lihat hasil penyenaraian anda:

Contents: [{
      ETag: "\"TAG\"",
      Key: "Folder1/Folder2/Folder3/",
      LastModified: 2023-03-02 17:32:17 +0000 UTC,
      Size: 0,
      StorageClass: "STANDARD"

Anda akan perasan ia tertera size: 0, jadi ini ialah objek sifar panjang.

Jika anda ingin mengecualikan jenis fail ini daripada senarai, langkau objek panjang sifar dalam kod anda.

Atas ialah kandungan terperinci AWS S3 ListObjectsV2 mengembalikan 'folder' sebagai objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam