66
77from fastapi import FastAPI , Depends , UploadFile , Form , File
88from starlette .requests import Request
9- from starlette .responses import HTMLResponse
9+ from starlette .responses import HTMLResponse , FileResponse
10+ import random
1011from starlette .staticfiles import StaticFiles
1112
1213from sqlalchemy import or_ , select , update , delete , create_engine
@@ -135,6 +136,18 @@ def ip_error(ip):
135136 return ip_info ['count' ]
136137
137138
139+ @app .get ('/select' )
140+ async def get_file (code : str , db : Session = Depends (get_db )):
141+ file = db .query (database .Codes ).filter (database .Codes .code == code ).first ()
142+ if file :
143+ if file .type == 'text' :
144+ return {'code' : code , 'msg' : '查询成功' , 'data' : file .text }
145+ else :
146+ return FileResponse ('.' + file .text , filename = file .name )
147+ else :
148+ return {'code' : 404 , 'msg' : '口令不存在' }
149+
150+
138151@app .post ('/' )
139152async def index (request : Request , code : str , s : AsyncSession = Depends (get_session )):
140153 ip = request .client .host
@@ -149,11 +162,13 @@ async def index(request: Request, code: str, s: AsyncSession = Depends(get_sessi
149162 await s .delete (info )
150163 await s .commit ()
151164 return {'code' : 404 , 'msg' : '取件码已过期,请联系寄件人' }
152-
153165 count = info .count - 1
154166 query = update (Codes ).where (Codes .id == info .id ).values (count = count )
155167 await s .execute (query )
156168 await s .commit ()
169+ if info .type != 'text' :
170+ info .text = f'/select?code={ code } '
171+
157172 return {
158173 'code' : 200 ,
159174 'msg' : '取件成功,请点击"取"查看' ,
0 commit comments