6
Я пытаюсь загрузить файл в boto
,Почему я получаю 400 при загрузке файла с помощью boto?
import io
from boto.s3 import connection
from boto.s3 import key
conn = connection.S3Connection()
bucket = conn.get_bucket('my-bucket')
my_key = key.Key(bucket, 'asdf')
d = b'this is a test....\n' * 512000
f = io.BytesIO(d)
my_key.send_file(f, size=4*1024)
Однако это приводит:
boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request
<?xml version="1.0" encoding="UTF-8"?><Error><Code>BadRequest</Code><Message>An error occurred when parsing the HTTP request.</Message><RequestId>[hex request ID]</RequestId><HostId>[giant piece of base64]</HostId></Error>
Почему этот запрос неудачу?
(примечание: вся причина, я использую send_file
здесь потому, что open
поддерживает, очевидно, только чтение ...)
Что произойдет, если вы выполните 'my_key.set_contents_from_file (f)' '. Вы получаете ту же ошибку? – garnaat
@ garnaat Звонок преуспевает; частью этого является то, что 'boto' не считывает весь файл в память: если я добавляю аргумент размера,' set_contents_from_file' только считывает первые байты размера. (Это то, что говорят docs, что функция будет делать, но это не то, что я хочу.) – Thanatos
Похоже, что вы действительно хотите, это правда, но, к сожалению, S3 этого не поддерживает. По крайней мере, пока. – garnaat