Upload File to Google Cloud Storage Bucket Sub Directory using Python

seanie_oc picture seanie_oc · Nov 6, 2017 · Viewed 13.1k times · Source

I have successfully implemented the python function to upload a file to Google Cloud Storage bucket but I want to add it to a sub-directory (folder) in the bucket and when I try to add it to the bucket name the code fails to find the folder.

Thanks!

def upload_blob(bucket_name, source_file_name, destination_blob_name):
  """Uploads a file to the bucket."""
  storage_client = storage.Client()
  bucket = storage_client.get_bucket(bucket_name +"/folderName") #I tried to add my folder here
  blob = bucket.blob(destination_blob_name)

  blob.upload_from_filename(source_file_name)

  print('File {} uploaded to {}.'.format(
    source_file_name,
    destination_blob_name))

Answer

jterrace picture jterrace · Nov 6, 2017

You're adding the "folder" in the wrong place. Note that Google Cloud Storage doesn't have real folders or directories (see Object name considerations).

A simulated directory is really just an object with a prefix in its name. For example, rather than what you have right now:

  • bucket = bucket/folderName
  • object = objectname

You'll instead want:

  • bucket = bucket
  • object = folderName/objectname

In the case of your code, I think this should work:

bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob("folderName/" + destination_blob_name)
blob.upload_from_filename(source_file_name)