lf_celine
lf_celine

Reputation: 673

Upload files in a subdirectory in S3 with boto3 in python

I want to upload files in a a subdirectory in a bucket. When I try to upload it in the bucket only it works well but I don't know how to add the subdirectory (Prefix ?)

def dlImgs():
    s3 = boto3.resource("s3")
    if gmNew is not None:
        reqImg = requests.get(gmNew, stream=True)
        fileObj = reqImg.raw
        reqData = fileObj.read()
        #upload to S3
        s3.Bucket(_BUCKET_NAME_IMG).put_object(Key=ccvName, Body=reqData)
dlImgs()

But how to add the Prefix ?

EDIT: I find the solution by creating a path directly in the ccvName variable.

Upvotes: 1

Views: 606

Answers (1)

PankajKushwaha
PankajKushwaha

Reputation: 918

I had written this long ago.

def upload_file(file_name,in_sub_folder,bucket_name):
    client = boto3.client('s3')
    fname = os.path.basename(file_name)

    key = f'{in_sub_folder}/{fname}'
    try:
        client.upload_file(fname, Bucket=bucket_name ,Key=key)
    except:
        print(f'{file_name} not uploaded')

Upvotes: 2

Related Questions