This is the code I'm working from
import sys import boto import boto.s3 # AWS ACCESS DETAILS AWS_ACCESS_KEY_ID = '' AWS_SECRET_ACCESS_KEY = '' bucket_name = AWS_ACCESS_KEY_ID.lower() + '-mah-bucket' conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) bucket = conn.create_bucket(bucket_name, location=boto.s3.connection.Location.DEFAULT) uploadfile = sys.argv[1] print 'Uploading %s to Amazon S3 bucket %s' % \ (uploadfile, bucket_name) def percent_cb(complete, total): sys.stdout.write('.') sys.stdout.flush() from boto.s3.key import Key k = Key(bucket) k.key = 'my test file' k.set_contents_from_filename(testfile, cb=percent_cb, num_cb=10)
On my S3 I have created "directories", like this "bucket/images/holiday". I know these are only virtual directories.
My question is, how can I modify this upload specifically to bucket/images/holiday virtual directory on S3 rather than the bucket root?
In the Amazon S3 console, choose the bucket where you want to upload an object, choose Upload, and then choose Add Files. In the file selection dialog box, find the file that you want to upload, choose it, choose Open, and then choose Start Upload. You can watch the progress of the upload in the Transfer pane.
All you should have to do is prepend the virtual directory path to the key name prior to uploading. For example:
key_name = 'my test file' path = 'images/holiday' full_key_name = os.path.join(path, key_name) k = bucket.new_key(full_key_name) k.set_contents_from_filename(...)
You may have to change that a bit for your application but hopefully that gives you the basic idea.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With