[英]Boto - Uploading file to a specific location on Amazon S3
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". 在我的S3上,我创建了“目录”,就像这个“桶/图像/假日”。 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? 我的问题是,如何将此上传专门修改为S3上的bucket / images / holiday虚拟目录而不是桶根?
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. 您可能需要为您的应用程序稍微改变一下,但希望这能为您提供基本的想法。
You can also use this: 你也可以用这个:
from boto.s3.key import Key
bucket = conn.get_bucket('images')
k = Key(bucket)
k.key = 'holiday/my_test_file.txt'
It works like this in my s3_percent_uploader 它在我的s3_percent_uploader中就像这样
python.exe s3_percent_uploader.py test_upload.txt testbucket test/upload.txt
after upload file will be in testbucket/test/upload.txt 上传文件后将在testbucket / test / upload.txt中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.