支持多文件上传

This commit is contained in:
2025-11-18 16:36:51 +08:00
parent 07bba946ac
commit ab92a87120

View File

@@ -72,17 +72,24 @@ router = APIRouter()
@router.post("/upload")
async def upload(
kb_id: str = Form(...),
file: UploadFile = File(...),
file: List[UploadFile] = File(...),
current_user = Depends(get_current_user)
):
"""上传文档"""
if not file:
return get_json_result(data=False, message="No file part!", code=settings.RetCode.ARGUMENT_ERROR)
if not file.filename or file.filename == "":
return get_json_result(data=False, message="No file selected!", code=settings.RetCode.ARGUMENT_ERROR)
if len(file.filename.encode("utf-8")) > FILE_NAME_LEN_LIMIT:
return get_json_result(data=False, message=f"File name must be {FILE_NAME_LEN_LIMIT} bytes or less.", code=settings.RetCode.ARGUMENT_ERROR)
valid_files: List[UploadFile] = []
for upload_file in file:
if not upload_file or not upload_file.filename:
return get_json_result(data=False, message="No file selected!", code=settings.RetCode.ARGUMENT_ERROR)
if len(upload_file.filename.encode("utf-8")) > FILE_NAME_LEN_LIMIT:
return get_json_result(
data=False,
message=f"File '{upload_file.filename}' name must be {FILE_NAME_LEN_LIMIT} bytes or less.",
code=settings.RetCode.ARGUMENT_ERROR
)
valid_files.append(upload_file)
e, kb = KnowledgebaseService.get_by_id(kb_id)
if not e:
@@ -90,7 +97,7 @@ async def upload(
if not check_kb_team_permission(kb, current_user.id):
return get_json_result(data=False, message="No authorization.", code=settings.RetCode.AUTHENTICATION_ERROR)
err, uploaded_files = FileService.upload_document(kb, [file], current_user.id)
err, uploaded_files = FileService.upload_document(kb, valid_files, current_user.id)
if err:
return get_json_result(data=uploaded_files, message="\n".join(err), code=settings.RetCode.SERVER_ERROR)