C'est le code à partir duquel je travaille
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)
Sur mon S3, j'ai créé des "répertoires", comme celui-ci "bucket/images/holiday". Je sais que ce ne sont que des répertoires virtuels.
Ma question est, comment puis-je modifier ce téléchargement spécifiquement dans le répertoire virtuel bucket/images/holiday sur S3 plutôt que la racine du bucket?
Tout ce que vous devez faire est d'ajouter le chemin du répertoire virtuel au nom de la clé avant le téléchargement. Par exemple:
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(...)
Vous devrez peut-être changer cela un peu pour votre application, mais j'espère que cela vous donnera l'idée de base.
Vous pouvez également utiliser ceci:
from boto.s3.key import Key
bucket = conn.get_bucket('images')
k = Key(bucket)
k.key = 'holiday/my_test_file.txt'
Cela fonctionne comme ça dans mon s3_percent_uploader
python.exe s3_percent_uploader.py test_upload.txt testbucket test/upload.txt
après le téléchargement, le fichier sera dans testbucket/test/upload.txt