2016-08-10 6 views
1

In Google Cloud-Speicher habe ich Eimer namens Katzen in einem Root-Bucket namens Bilder. Ich verwende den Google-API-Ruby-Client-Edelstein, um Dateien hochzuladen. Ich kann eine Datei in den Root-Bereich "Bilder" hochladen, aber das Hochladen auf "Bilder/Katzen" funktioniert nicht. Ich bin mir bewusst, dass die Buckets in Google Cloud-Speicher keine Ahnung von Schrägstrich haben, so dass ich nicht herausfinden kann, wie ich den Namen des verschachtelten Buckets angeben soll.Hochladen in geschachtelte Buckets in Google Cloud-Speicher

result = client.execute(
    api_method: api.objects.insert, 
    media: media, 
    parameters: { 
    uploadType: 'resumable', 
    bucket: 'images/cats', #This does not work !. Just images works. 
    name: 'kitty.jpeg', 
    }, 
    body_object: {contentType: 'image/jpeg'} 
) 

Dies gibt den Fehler NoMethodError: undefined method query_values for nil:NilClass. Der Code funktioniert, wenn ich nur "Bilder" für den Bucket-Wert verwende.

Wie kann ich den Upload auch für verschachtelte Buckets machen?

Dank

Antwort

2

Google Cloud Storage haben nicht wahr Verzeichnisse - es hat einen flachen Namespace. Sie können Verzeichnisse teilweise simulieren, indem Sie in Ihren Objektnamen "/" -Zeichen verwenden und beim Auflisten von Buckets Präfix- und Delimiter-Abfragen verwenden.

Das Problem, das Sie sehen, wird durch die Tatsache verursacht, dass Bucket-Namen "/" nicht enthalten können. Verwenden Sie stattdessen die Bucket- "Images" und Objektnamen, die mit "cats /" beginnen.

+0

Vielen Dank, das hat funktioniert! :) –

Verwandte Themen