1

Ich verwende Google Storage JSON API, um einen Json mit allen Elementen in meinem Bucket zu erhalten, um eine Baumstruktur innerhalb meiner Anwendung zu erstellen. Mein Problem ist, dass einige Ordner Elemente in diesem JSON fehlen. Diese ist die Ausgabe eines Ordners Artikel:Google Storage JSON API fehlt Ordner item

{ 
     "kind": "storage#object", 
     "id": "id", 
     "selfLink": "selfLink", 
     "name": "pdf/", 
     "bucket": "bucket-name", 
     "generation": "1461762807657000", 
     "metageneration": "1", 
     "contentType": "application/x-www-form-urlencoded;charset=UTF-8", 
     "timeCreated": "2016-04-27T13:13:27.626Z", 
     "updated": "2016-04-27T13:13:27.626Z", 
     "storageClass": "STANDARD", 
     "timeStorageClassUpdated": "2016-04-27T13:13:27.626Z", 
     "size": "0", 
     "md5Hash": "", 
     "mediaLink": "link", 
     "crc32c": "", 
     "etag": "" 
    } 

Dies ist PDF-Ordner, aber zum Beispiel Video-Ordner fehlt trotz Elemente in diesem Ordner befinden sich in der JSON zur Verfügung. Ich erhalte das gleiche Ergebnis versuchen API auf dieser Seite Google Storage Object List

+0

Gibt es ein 'pageToken', das von Ihrem Anruf zurückgegeben wurde? – jterrace

Antwort

0

Google Cloud Storage hat einen flachen Namespace, so dass "Ordner" nicht wirklich existieren. Stattdessen haben wir eine ListObject API mit 'Präfix' und 'Delimiter' Optionen, die eine sehr ineffiziente Simulation einer Hierarchie ermöglichen, indem Sie 'Präfix' auf den "Ordner" setzen, den Sie auflisten möchten, und das Trennzeichen auf '/' setzen. Dies führt dazu, dass alle Objekte in diesem Ordner im Listenaufruf zurückgegeben werden und alle "Ordner" als allgemeine_Präfixe zurückgegeben werden.

Leider bedeutet dies, dass Sie nicht wirklich einen Ordner in Google Cloud-Speicher erstellen können. Ordner sind nur vorhanden, wenn Objekte darin enthalten sind. Wenn also ein Benutzer in der Benutzeroberfläche einen "Ordner" erstellt, erstellt die Benutzeroberfläche im Ordner mit dem Namen "" ein Null-Byte-Platzhalterobjekt, um den "Ordner" zu erstellen.

Wenn jemand eine Datei mit einem Namen hochlädt, der sie in einen Ordner lädt, ohne diesen Ordner zuerst über die Benutzeroberfläche zu erstellen, wird dieses Platzhalterobjekt nie erstellt.