mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-27 06:41:12 +00:00
74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from fastapi import APIRouter, BackgroundTasks, Depends, File, Query, Request, UploadFile
|
|
from fastapi.responses import JSONResponse, StreamingResponse
|
|
|
|
from app.core.logger import logger
|
|
from app.api.v1.services.common.common_service import CommonService
|
|
from app.common.response import SuccessResponse, StreamResponse
|
|
from app.core.dependencies import AuthPermission
|
|
from app.core.router_class import OperationLogRoute
|
|
|
|
|
|
router = APIRouter(route_class=OperationLogRoute)
|
|
|
|
|
|
@router.get(
|
|
'/list',
|
|
summary="获取文件列表",
|
|
description="获取文件列表",
|
|
dependencies=[Depends(AuthPermission(permissions=['common:file:query']))]
|
|
)
|
|
async def common_get_file_list(request: Request)->JSONResponse:
|
|
"""
|
|
获取文件列表
|
|
"""
|
|
file_result = await CommonService.get_file_list_services(request)
|
|
return SuccessResponse(msg='获取文件列表成功', data=file_result)
|
|
|
|
@router.post(
|
|
'/upload',
|
|
summary="上传文件",
|
|
description="上传文件",
|
|
dependencies=[Depends(AuthPermission(permissions=['common:file:upload']))]
|
|
)
|
|
async def common_upload(
|
|
request: Request,
|
|
file: UploadFile = File(...)
|
|
) -> JSONResponse:
|
|
upload_result = await CommonService.upload_service(request, file)
|
|
logger.info(f"上传文件成功: {file.filename}")
|
|
return SuccessResponse(msg='上传成功', data=upload_result)
|
|
|
|
|
|
@router.get(
|
|
'/download',
|
|
summary="下载文件",
|
|
description="下载文件",
|
|
dependencies=[Depends(AuthPermission(permissions=['common:file:download']))]
|
|
)
|
|
async def common_download(
|
|
background_tasks: BackgroundTasks,
|
|
file_name: str = Query(alias='fileName'),
|
|
delete: bool = Query(),
|
|
) -> StreamingResponse:
|
|
download_result = await CommonService.download_services(background_tasks, file_name, delete)
|
|
logger.info(f"下载文件成功: {file_name}")
|
|
|
|
return StreamResponse(msg='下载成功', data=download_result)
|
|
|
|
|
|
@router.get(
|
|
'/download/resource',
|
|
summary="下载资源",
|
|
description="下载资源",
|
|
dependencies=[Depends(AuthPermission(permissions=['common:file:download']))]
|
|
)
|
|
async def common_download_resource(
|
|
resource: str = Query()
|
|
) -> StreamingResponse:
|
|
download_resource_result = await CommonService.download_resource_services(resource)
|
|
logger.info(f"下载资源成功: {resource}")
|
|
|
|
return StreamResponse(msg='下载成功', data=download_resource_result.result)
|