У меня есть форма HTML (реализована в Flask) для загрузки файлов. И я хочу сохранить загруженные файлы непосредственно на S3.
Соответствующая часть реализации Flask выглядит следующим образом:
@app.route('/',methods=['GET'])
def index():
return '<form method="post" action="/upload" enctype="multipart/form-data"><input type="file" name="files" /><button>Upload</button></form>'
Затем я использую boto3
для загрузки файла на S3 следующим образом:
file = request.files['files']
s3_resource = boto3.resource(
's3',
aws_access_key_id='******',
aws_secret_access_key='*******')
bucket = s3_resource.Bucket('MY_BUCKET_NAME')
bucket.Object(file.filename).put(Body=file)
file
является werkzeug.datastructures.FileStorage
объектом.
Но я получаю следующую ошибку при загрузке файла на S3:
botocore.exceptions.ClientError: An error occurred (BadDigest) when calling the PutObject operation (reached max retries: 4): The Content-MD5 you specified did not match what we received
.
Как загрузить файл на S3?