Загрузка на S3, получение boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request - PullRequest
0 голосов
/ 30 мая 2018

Рассмотрим этот код

    file = request.files["wg_puid"]
    filename = hash + ".wargamerpl2"
    zipname = hash + ".zip"
    file.save(os.path.join(UPLOAD_FOLDER, filename))
    os.chdir(UPLOAD_FOLDER)
    zipfile.ZipFile(zipname, mode='w').write(os.path.join(UPLOAD_FOLDER, filename))
    if os.path.exists(filename):
        os.remove(filename)
    else:
        return apology("Something went wrong", 400)


    # Uploads replay to S3
    # TODO fix error
    key = boto.s3.key.Key(bucket, zipname)
    with open(zipname, "rb") as f:
        key.send_file(f)

Что я пытаюсь .zip файл, который загружен на сервер, а затем отправить этот файл в мое ведро S3.В настоящее время я получаю сообщение об ошибке:

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>3184ACA27BE403B1</RequestId><HostId>...</HostId></Error>

Что здесь с моим кодом?

1 Ответ

0 голосов
/ 30 мая 2018

Мне нужно было использовать set_contents_from_filename, а не send_file

Вот мой код, исправленный и работающий.

        # Upload percentage
    def percent_cb(complete, total):
        sys.stdout.write('.')
        sys.stdout.flush()

    # Upload .zip to S3 bucket
    k = Key(bucket)
    k.key = zipname
    k.set_contents_from_filename(zipname, cb=percent_cb, num_cb=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...