Enviando arquivos do servidor - FastAPI
Para enviar arquivos a partir de uma aplicação FastAPI, utiliza-se a classe FileResponse, que herda da classe Response.
Imagine que temos o seguinte projeto FastAPI:
. ├──public │ └── index.html ├── main.py
O arquivo index.html
<!DOCTYPE html>
<html>
<head>
<title>www.programicio.com</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Hello www.programicio.com!</h1>
</body>
</html>
Agora, no arquivo main.py
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get("/")
def root():
return FileResponse("public/index.html")
# Alternativa
@app.get("/file", response_class=FileResponse)
def root_html():
return "public/index.html"
O parâmetro obrigatório do construtor de FileResponse
Ao enviar o arquivo, o navegador será capaz de interpretá-lo como um código HTML, exibindo assim a página no navegador.

Por padrão, o navegador tenta interpretar e exibir qualquer arquivo que consiga, como arquivos de texto, imagens ou outros tipos de mídia. Caso o navegador não consiga interpretar o arquivo, ele será baixado automaticamente.
No entanto, pode ser necessário forçar o download de arquivos que normalmente seriam exibidos, como arquivos HTML. Para isso, podemos definir o parâmetro media_type
application/octet-stream
filename
Exxemplo:
import mimetypes
from fastapi import FastAPI
from fastapi.responses import FileResponse
app = FastAPI()
@app.get("/")
def root():
return FileResponse("public/index.html",
filename="mainpage.html",
media_type="application/octet-stream")
Neste exemplo, O uso do parâmetro media_type="application/octet-stream"
A propriedade filename
