我正在使用Flask應用程序接收帶有上傳文件(在此示例中爲視頻)的多部分/表單數據請求。燒瓶 - 處理表單文件並上傳到AWS S3而不保存到文件
我不想將文件保存在本地目錄中,因爲此應用程序將在服務器上運行,並且保存它會減慢速度。
我想使用由Flask request.files ['']方法創建的文件對象,但它似乎並沒有工作。
下面是它的一部分代碼:上線
TypeError: must be encoded string without NULL bytes, not str
:
@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')
這將返回一個錯誤
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