mirror of
https://github.com/fccapria/scientify.git
synced 2026-01-12 02:36:10 +00:00
Initial release
This commit is contained in:
commit
ae5e4b8873
52 changed files with 17572 additions and 0 deletions
26
backend/app/download.py
Normal file
26
backend/app/download.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
from fastapi import APIRouter, HTTPException, Depends
|
||||
from fastapi.responses import StreamingResponse
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.future import select
|
||||
|
||||
from app.db import Publication, get_db
|
||||
|
||||
import io
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.get("/download/{publication_id}")
|
||||
async def download_publication(publication_id: int, db: AsyncSession = Depends(get_db)):
|
||||
result = await db.execute(select(Publication).where(Publication.id == publication_id))
|
||||
publication = result.scalar_one_or_none()
|
||||
if not publication:
|
||||
raise HTTPException(status_code=404, detail="Publication not found")
|
||||
file_bytes = publication.file
|
||||
filename = publication.filename or "document.pdf"
|
||||
|
||||
return StreamingResponse(
|
||||
io.BytesIO(file_bytes),
|
||||
media_type="application/pdf",
|
||||
headers={"Content-Disposition": f"attachment; filename={filename}"}
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue