File tree Expand file tree Collapse file tree 1 file changed +25
-0
lines changed
Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change 1+ from starlette import status
2+ from starlette .middleware .base import BaseHTTPMiddleware , RequestResponseEndpoint
3+ from starlette .requests import Request
4+ from starlette .responses import Response
5+ from starlette .types import ASGIApp
6+
7+
8+ class LimitUploadSize (BaseHTTPMiddleware ):
9+ def __init__ (self , app : ASGIApp , max_upload_size : int ) -> None :
10+ super ().__init__ (app )
11+ self .max_upload_size = max_upload_size
12+
13+ async def dispatch (
14+ self , request : Request , call_next : RequestResponseEndpoint
15+ ) -> Response :
16+ if request .method == "POST" :
17+ if "content-length" not in request .headers :
18+ return Response (status_code = status .HTTP_411_LENGTH_REQUIRED )
19+ content_length = int (request .headers ["content-length" ])
20+ if content_length > self .max_upload_size :
21+ return Response (
22+ "File is too large" ,
23+ status_code = status .HTTP_413_REQUEST_ENTITY_TOO_LARGE ,
24+ )
25+ return await call_next (request )
You can’t perform that action at this time.
0 commit comments