Files
video-gen/video-gen-api/app/api/admin/upload.py
T

42 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from __future__ import annotations
from fastapi import APIRouter, Depends, File, Form, UploadFile
from sqlalchemy.ext.asyncio import AsyncSession
from app.dependencies import get_admin_user, get_db
from app.enums.admin_upload import AdminUploadResourceTypeEnum, AdminUploadSceneEnum
from app.models.user import User
from app.schemas.admin_upload import AdminUploadFileOut
from app.services.admin_upload import admin_upload_service
router = APIRouter(prefix="/admin/uploads", tags=["admin-upload"])
@router.post(
"/files",
response_model=AdminUploadFileOut,
summary="管理后台全局文件上传",
description=(
"管理后台纯文件上传统一入口。通过 scene 区分业务场景并落到独立目录;"
"首页素材附件使用 scene=home_material_reference,系统Logo使用 system_logoPDF使用 system_pdf,开户缩略图使用 open_type_thumb。"
),
)
async def upload_admin_file(
file: UploadFile = File(..., description="上传文件。"),
scene: AdminUploadSceneEnum = Form(..., description="上传场景。"),
resource_type: AdminUploadResourceTypeEnum = Form(..., description="资源类型:image/video/audio/pdf/file。"),
duration_seconds: float | None = Form(None, ge=0, description="音视频时长,单位秒。"),
admin: User = Depends(get_admin_user),
db: AsyncSession = Depends(get_db),
):
result = await admin_upload_service.upload_file(
db,
file=file,
scene=scene,
resource_type=resource_type,
duration_seconds=duration_seconds,
admin=admin,
)
await db.commit()
return result