添加客户端的文件上传和上传信息获取功能

This commit is contained in:
wcq 2023-12-12 18:59:36 +08:00
parent f131d33fe3
commit 66aef60f9d
5 changed files with 39 additions and 6 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@
**.pyc
static/2.json
static/填报模板1.xlsx
/static/smebiz2013/

View File

@ -1,4 +1,5 @@
import json
from datetime import datetime
from typing import List, Tuple
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Form
@ -15,10 +16,10 @@ from . import schemas
router = APIRouter(tags=["接收文件"], prefix='/receive_file')
@router.post("/update_file", summary="修改主题文件模板附带文件")
@router.post("/update_file", summary="上传提交文件")
def update_file(file: UploadFile = File(...), data: str = Form(...),
db: Session = Depends(get_db),
auth_info = Depends(get_url_code_and_code), ):
auth_info=Depends(get_url_code_and_code), ):
[order, _, _] = auth_info
order: ReceiveOrder
data = json.loads(data)
@ -39,6 +40,25 @@ def update_file(file: UploadFile = File(...), data: str = Form(...),
folder_name = subject.folder_name
file_path = file_upload(file, static_path / folder_name, db)
req.file_path = file_path
req.upload_time = datetime.now()
item = crud.receive_file_update(db, req)
return schemas.ReceiveFileUpdateRes(**item.to_dict())
@router.post("/remove_file", summary="删除文件")
def remove_file(req: schemas.ReceiveFileId,
db: Session = Depends(get_db),
auth_info=Depends(get_url_code_and_code), ):
[order, _, _] = auth_info
order: ReceiveOrder
file = db.query(ReceiveFile).filter(ReceiveFile.receive_order_id == order.id, ReceiveFile.id == req.id).first()
if not file:
raise HTTPException(status_code=303, detail="未查询到文件")
file: ReceiveFile
# 文件不删
file.name = None
file.file_path = None
file.upload_time = None
db.commit()
return "成功"
#########

View File

@ -14,6 +14,7 @@ class ReceiveFileAdd(BaseModel):
receive_order_id: str
receive_subject_file_id: int
file_path: Optional[str] = None
upload_time: Optional[datetime] = None
class ReceiveFileAddOptional(ReceiveFileAdd, metaclass=AllOptional):

View File

@ -1,5 +1,15 @@
from fastapi import APIRouter
from fastapi import APIRouter, Depends
from .mods.receive_order.router import router as receive_order_router
from .mods.receive_file.router import router as receive_file_router
from .utils import get_url_code_and_code
router = APIRouter(prefix="/client")
router = APIRouter(prefix="/receive_client", tags=['客户端'])
@router.post('/check', summary='链接验证')
def check(auth_info=Depends(get_url_code_and_code)):
return '成功'
router.include_router(receive_file_router)
router.include_router(receive_order_router)

View File

@ -6,14 +6,15 @@ from ..models import ReceiveOrder
def get_url_code_and_code(
db: Session = Depends(get_db),
url_code: str = Header(None),
urlcode: str = Header(None),
code: str = Header(None)
):
url_code = urlcode
if url_code is None or code is None:
raise HTTPException(status_code=303, detail="缺少链接或密码")
order = db.query(ReceiveOrder).filter(
ReceiveOrder.url_code == url_code, ReceiveOrder.code == code).first()
if not order:
raise HTTPException(status_code=303, detail="错误的链接或密码")
raise HTTPException(status_code=403, detail="错误的链接或密码")
return order, url_code, code