Heim >Backend-Entwicklung >Golang >AWS S3 ListObjectsV2 gibt „Ordner' als Objekt zurück
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/" }
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
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!