Files
FastapiAdmin/backend/app/api/v1/module_common/file/controller.py
T
zhangtao 3c12fa56eb refactor: 移除多租户和客户相关代码及功能
refactor: 统一状态字段为字符串类型并更新相关组件
refactor: 更新模型基类移除租户和客户相关字段
refactor: 简化数据权限控制逻辑
refactor: 优化类型注解使用Python 3.10+语法
refactor: 清理无用导入和注释
docs: 更新文档移除多租户相关内容
2025-12-01 00:36:05 +08:00

59 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
from pathlib import Path
from fastapi import APIRouter, BackgroundTasks, Body, Depends, UploadFile, Request
from fastapi.responses import JSONResponse, FileResponse
from app.core.dependencies import AuthPermission
from app.core.logger import log
from app.common.response import SuccessResponse, UploadFileResponse
from app.core.router_class import OperationLogRoute
from app.utils.upload_util import UploadUtil
from .service import FileService
FileRouter = APIRouter(route_class=OperationLogRoute, prefix="/file", tags=["文件管理"])
@FileRouter.post("/upload", summary="上传文件", description="上传文件",dependencies=[Depends(AuthPermission(["module_common:file:upload"]))])
async def upload_controller(
file: UploadFile,
request: Request,
) -> JSONResponse:
"""
上传文件
参数:
- file (UploadFile): 上传的文件
- request (Request): 请求对象
返回:
- JSONResponse: 包含上传文件详情的JSON响应
"""
result_dict = await FileService.upload_service(base_url=str(request.base_url), file=file)
log.info(f"上传文件成功 {result_dict}")
return SuccessResponse(data=result_dict, msg="上传文件成功")
@FileRouter.post("/download", summary="下载文件", description="下载文件", dependencies=[Depends(AuthPermission(["module_common:file:download"]))])
async def download_controller(
background_tasks: BackgroundTasks,
file_path: str = Body(..., description="文件路径"),
delete: bool = Body(False, description="是否删除文件"),
) -> FileResponse:
"""
下载文件
参数:
- background_tasks (BackgroundTasks): 后台任务对象
- file_path (str): 文件路径
- delete (bool): 是否删除文件
返回:
- FileResponse: 包含下载文件的响应
"""
result = await FileService.download_service(file_path=file_path)
if delete:
background_tasks.add_task(UploadUtil.delete_file, Path(file_path))
log.info(f"下载文件成功")
return UploadFileResponse(file_path=result.file_path, filename=result.file_name)