diff --git a/api/apps/document_app.py b/api/apps/document_app.py index 45f89ff..00188be 100644 --- a/api/apps/document_app.py +++ b/api/apps/document_app.py @@ -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)