UploadFile class¶
You can define path operation function parameters to be of the type UploadFile
to receive files from the request.
You can import it directly from fastapi:
from fastapi import UploadFile
          fastapi.UploadFile
¶
UploadFile(file, *, size=None, filename=None, headers=None)
            Bases: UploadFile
A file uploaded in a request.
Define it as a path operation function (or dependency) parameter.
If you are using a regular def function, you can use the upload_file.file
attribute to access the raw standard Python file (blocking, not async), useful and
needed for non-async code.
Read more about it in the FastAPI docs for Request Files.
Example¶
from typing import Annotated
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(file: Annotated[bytes, File()]):
    return {"file_size": len(file)}
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile):
    return {"filename": file.filename}
| PARAMETER | DESCRIPTION | 
|---|---|
file | 
          
             
                
                  TYPE:
                      | 
        
size | 
          
             
                
                  TYPE:
                      | 
        
filename | 
          
             
                
                  TYPE:
                      | 
        
headers | 
          
             
                
                  TYPE:
                      | 
        
Source code in starlette/datastructures.py
                  436 437 438 439 440 441 442 443 444 445 446 447  |  | 
          read
  
  
      async
  
¶
read(size=-1)
Read some bytes from the file.
To be awaitable, compatible with async, this is run in threadpool.
| PARAMETER | DESCRIPTION | 
|---|---|
size | 
          
             The number of bytes to read from the file. 
                
                  TYPE:
                      | 
        
Source code in fastapi/datastructures.py
            95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111  |  | 
          write
  
  
      async
  
¶
write(data)
Write some bytes to the file.
You normally wouldn't use this from a file you read in a request.
To be awaitable, compatible with async, this is run in threadpool.
| PARAMETER | DESCRIPTION | 
|---|---|
data | 
          
             The bytes to write to the file. 
                
                  TYPE:
                      | 
        
Source code in fastapi/datastructures.py
            75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93  |  | 
          seek
  
  
      async
  
¶
seek(offset)
Move to a position in the file.
Any next read or write will be done from that position.
To be awaitable, compatible with async, this is run in threadpool.
| PARAMETER | DESCRIPTION | 
|---|---|
offset | 
          
             The position in bytes to seek to in the file. 
                
                  TYPE:
                      | 
        
Source code in fastapi/datastructures.py
            113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131  |  | 
          close
  
  
      async
  
¶
close()
Close the file.
To be awaitable, compatible with async, this is run in threadpool.
Source code in fastapi/datastructures.py
            133 134 135 136 137 138 139  |  |