Heim >Backend-Entwicklung >Golang >AWS S3 ListObjectsV2 gibt „Ordner' als Objekt zurück

AWS S3 ListObjectsV2 gibt „Ordner' als Objekt zurück

WBOY
WBOYnach vorne
2024-02-08 20:53:49727Durchsuche

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

Frageninhalt

Ich versuche, alle Dateien in einem bestimmten Verzeichnis in einem S3-Bucket aufzulisten (ich weiß, dass S3 nicht wirklich ein Verzeichnis hat).

Die Struktur ist:

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

Ich glaube also, dass in der S3-Welt nur eine oben genannte Datei gespeichert wird.

Das ist mein Code:

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

    resp, _ := svc.listobjectsv2(params)

resp enthält die Datei, die ich erwarte, und das „Verzeichnis“, in dem sie gespeichert ist:

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/"
}

Ich habe es auch versucht:

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

    resp, _ := svc.listobjectsv2(params)

Aber das Ergebnis ist das gleiche.

Das ist das Ergebnis der Parameter:

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

Richtige Antwort


Ich gehe davon aus, dass Sie fragen, warum ein Verzeichnis als Objekt zurückgegeben wird.

Sie haben völlig Recht, amazon s3 verwendet keine Verzeichnisse. Stattdessen ist der Dateiname (key) des Objekts der vollständige Pfad, einschließlich des Dateinamens. Es ist nicht erforderlich, ein Verzeichnis zu erstellen, bevor ein Objekt in einem bestimmten Pfad erstellt wird.

Wenn jedoch jemand in der S3-Verwaltungskonsole auf die Schaltfläche „Ordner erstellen“ klickt, wird ein „Objekt der Länge Null“ mit dem Namen des Verzeichnisses erstellt. Dadurch wird das Erscheinen des Verzeichnisses „erzwungen“ (da sich darin ein Objekt befindet), es handelt sich jedoch tatsächlich um ein Objekt der Länge Null. Sehen Sie sich Ihre Eintragsergebnisse an:

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

steht, es handelt sich also um ein Objekt der Länge Null.

Wenn Sie diese Dateitypen aus der Liste ausschließen möchten, überspringen Sie einfach die Objekte der Länge Null in Ihrem Code.

Das obige ist der detaillierte Inhalt vonAWS S3 ListObjectsV2 gibt „Ordner' als Objekt zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen