from flask_restx import Resource, fields
from flask import request
import sys
import os
from werkzeug.datastructures import FileStorage
from werkzeug.utils import secure_filename
BASEDIR = os.path.abspath(os.path.dirname(__file__))
upload_parser = api.parser()
upload_parser.add_argument('file', location='files',
type=FileStorage, required=True)
@api.route("/your_route_name")
@api.expect(upload_parser)
class MyResource(Resource):
@api.marshal_with(<output_dataformat_schema_defined_here>, skip_none=True)
def post(self):
uploaded_file = request.files['file']
if uploaded_file:
secured_logfilename = secure_filename(uploaded_file.filename)
uploaded_file.save(os.path.join(os.path.join(BASEDIR,
"current_logs"), secured_logfilename))
return {"message": "File successfully uploaded"}, 200
else:
return {"message": "File upload unsuccessful"}, 400
Source: Flask restx, Flask