Я пытаюсь создать супер простой скрипт загрузки файлов, используя библиотеку boto, а не другие.Из того, что я пробовал, такое ощущение, что оно должно работать, но это не так.
Ошибка, которую я получаю сейчас:
S3ResponseError: 400 Bad Request
Вот код, который я имею в виду:
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
file = request.FILES['file']
filename = file.name
conn = boto.connect_s3()
bucket = conn.create_bucket('some-bucket-name')
from boto.s3.key import Key
k = Key(bucket)
k.key = filename
k.send_file(file)
k.content_type = mimetypes.guess_type(filename)[0]
k.set_contents_from_stream(file.chunks())
k.set_acl('public-read')
return HttpResponseRedirect('/')
else:
form = UploadFileForm()
return render_to_response('home/upload.html',
{'form':form},
context_instance=RequestContext(request))
Если я изменю его, чтобы сохранить его локальноработает так что загрузка на s3 прервана.Я проверил set_contents_from_string
, и это работает для строковых данных.Тем не менее, все, что имеет дело с файлами или потоками, я получаю вышеупомянутую ошибку.Я где-то пропускаю настройку или я делаю что-то совершенно неправильно?