Я использую приложение Flask для получения запроса mutipart/form-data с загруженным файлом (видео в этом примере).Флажок - Обращение с файлом формы и загрузка в AWS S3 без сохранения в файл
Я не хочу сохранять файл в локальном каталоге, потому что это приложение будет работать на сервере, и его сохранение замедлит работу.
Я пытаюсь использовать файл-объект, созданный методом Flask request.files [''], но он, похоже, не работает.
Вот та часть кода:
@bp.route('/video_upload', methods=['POST'])
def VideoUploadHandler():
form = request.form
video_file = request.files['video_data']
if video_file:
s3 = boto3.client('s3')
s3.upload_file(video_file.read(), S3_BUCKET, 'video.mp4')
return json.dumps('DynamoDB failure')
Это возвращает ошибку:
TypeError: must be encoded string without NULL bytes, not str
на линии:
s3.upload_file(video_file.read(), S3_BUCKET, 'video.mp4')
я получить эту работу по первому сохраняя файл и затем получая доступ к этому сохраненному файлу, поэтому это не проблема с поиском файла запроса. Это работает:
video_file.save(form['video_id']+".mp4")
s3.upload_file(form['video_id']+".mp4", S3_BUCKET, form['video_id']+".mp4")
Что бы быть лучшим методом для обработки Этот файл данных в памяти и передать его методу s3.upload_file()
? Я использую методы boto3 here, и я только нахожу примеры с именем файла, используемым в первом параметре, поэтому я не уверен, как правильно обрабатывать этот файл в памяти. Благодаря!
вам удалось этот вопрос? – cuongnv23