Monté el directorio estático en mi aplicación FastAPI usando el siguiente código:
from fastapi.staticfiles import StaticFiles app = FastAPI( title="Title of the Application", description="Over all description of the application") app.mount("/public", StaticFiles(directory='public'), name='public')
Si tengo un enlace simbólico que apunta a una ruta fuera de la carpeta de la aplicación, por ejemplo
/home/xyz/app/main.py /home/xyz/app/index.html /home/xyz/app/public/data -> /home/xyz/static/whatever.tgz
La aplicación FastAPI puede reconocer la URL xyz.com/public/index.html
, pero no puede reconocer xyz.com/public/data
.
¿Es esto factible? Desafortunadamente, no puedo usar FileResponse
debido a que el tamaño del blob
es demasiado grande. Quiero devolver el archivo con un enlace simple de alguna manera.
Es factible, siempre que monte una instancia de StaticFiles() en esa ruta específica también. Por ejemplo:
app.mount("/public", StaticFiles(directory="public"), name="public") app.mount("/publicsym", StaticFiles(directory="public/data"), name="publicsym")
Luego, en su plantilla Jinja2, puede solicitar los archivos de la siguiente manera, por ejemplo:
<link href="{{ url_for('public', path='/styles.css') }}" rel="stylesheet"> <img src="{{ url_for('publicsym', path='/image.png')}}" width="50%">
o, según su ejemplo dado (si hay un directorio "estático" que incluye un archivo "lo que sea.tgz" en la carpeta señaladora):
{{ url_for('publicsym', path='static/whatever.tgz')}}