0

I try to make custom middleware to validate upload file in http requests.
sample code:

    class MyMiddleware(BaseHTTPMiddleware):
        ...
        async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) ->  Response:
            scope = request.scope

            if scope["method"] not in ("POST", "PUT"):
                response = await call_next(request)
                return response

            form = await request.form()
            content_type = form[next(iter(form))].content_type
            if content_type not in self.file_type:
                return _unsupported_media_type

        response = await call_next(request)
        return response

But, response = await call_next(request) causes HTTP communication to stall when using above middleware in FastAPI.
like below pic: enter image description here

Thank you for reading!


This code based on these:

alex_noname
  • 26,459
  • 5
  • 69
  • 86
ttt
  • 1
  • This is a known [issue](https://github.com/encode/starlette/issues/495) I’d suggest you to use a dependency instead of the middleware. – alex_noname Dec 02 '21 at 16:02
  • @alex_noname Thanks for your comment. I'd implement to use a dependency! – ttt Dec 03 '21 at 08:32

0 Answers0