У меня есть форма HTML (реализована в Flask) для загрузки файлов. И я хочу сохранить загруженные файлы непосредственно на S3.
Соответствующая часть реализации Flask выглядит следующим образом:
@app.route('/',methods=['GET'])
def index():
return '<form method="post" action="/upload" enctype="multipart/form-data"><input type="file" name="file" /><button>Upload</button></form>'
Затем я использую boto3 для загрузки файла на S3 следующим образом:
@app.route('/upload',methods = ['GET','POST'])
def upload_file():
if request.method =='POST':
file = request.files['file']
if file:
filename = secure_filename(file.filename)
#file.save(os.path.join(UPLOAD_FOLDER,filename))
s3_resource = boto3.resource('s3',aws_access_key_id='****',
aws_secret_access_key='*****')
buck = s3_resource.Bucket('MY_BUCKET_NAME')
buck.Object(file.filename).put(Body=file.read())
return 'uploaded'
Файл успешно загружен в S3 Bucket. И при попытке открыть этот файл он открывается как пустой текстовый файл. Даже я пытался установить ContentType
в put()
метод, но все еще не работает.
Также его размер показывает 0B
Пожалуйста, дайте мне знать, что происходит не так?
Спасибо!