Coverage for docs_src/request_files/tutorial003_an.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1from typing import List 1abcdefg

2 

3from fastapi import FastAPI, File, UploadFile 1abcdefg

4from fastapi.responses import HTMLResponse 1abcdefg

5from typing_extensions import Annotated 1abcdefg

6 

7app = FastAPI() 1abcdefg

8 

9 

10@app.post("/files/") 1abcdefg

11async def create_files( 1abcdefg

12 files: Annotated[List[bytes], File(description="Multiple files as bytes")], 

13): 

14 return {"file_sizes": [len(file) for file in files]} 1opqrstu

15 

16 

17@app.post("/uploadfiles/") 1abcdefg

18async def create_upload_files( 1abcdefg

19 files: Annotated[ 

20 List[UploadFile], File(description="Multiple files as UploadFile") 

21 ], 

22): 

23 return {"filenames": [file.filename for file in files]} 1vwxyzAB

24 

25 

26@app.get("/") 1abcdefg

27async def main(): 1abcdefg

28 content = """ 1hijklmn

29<body> 

30<form action="/files/" enctype="multipart/form-data" method="post"> 

31<input name="files" type="file" multiple> 

32<input type="submit"> 

33</form> 

34<form action="/uploadfiles/" enctype="multipart/form-data" method="post"> 

35<input name="files" type="file" multiple> 

36<input type="submit"> 

37</form> 

38</body> 

39 """ 

40 return HTMLResponse(content=content) 1hijklmn