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

WBOY
Freigeben: 2024-02-08 20:53:49
nach vorne
651 Leute haben es durchsucht

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)
Nach dem Login kopieren

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/"
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

Aber das Ergebnis ist das gleiche.

Das ist das Ergebnis der Parameter:

Params:  {
  Bucket: "BUCKET",
  Prefix: "Folder1/Folder2/Folder3/"
}
Nach dem Login kopieren


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"
Nach dem Login kopieren
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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!