-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.py
34 lines (23 loc) · 896 Bytes
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from fastapi import FastAPI, Request, Depends
from fastapi.responses import RedirectResponse
from fastapi.templating import Jinja2Templates
from dotenv import load_dotenv
from fastfiles import S3, Local, Memory, FileData
load_dotenv()
app = FastAPI()
templates = Jinja2Templates(directory='.')
s3 = S3(config={'extra-args': {'ACL': 'public-read'}})
local = Local()
memory = Memory()
@app.get('/')
async def home(req: Request):
return templates.TemplateResponse('home.html', {'request': req})
@app.post('/s3_upload', name='s3_upload')
async def upload(file: FileData = Depends(s3)) -> FileData:
return file
@app.post('/local_upload', name='local_upload')
async def upload(files: list[FileData] = Depends(local)) -> list[FileData]:
return files
@app.post('/memory_upload', name='memory_upload')
async def upload(file: FileData = Depends(memory)) -> FileData:
return file