支持多文件上传
This commit is contained in:
@@ -72,17 +72,24 @@ router = APIRouter()
|
|||||||
@router.post("/upload")
|
@router.post("/upload")
|
||||||
async def upload(
|
async def upload(
|
||||||
kb_id: str = Form(...),
|
kb_id: str = Form(...),
|
||||||
file: UploadFile = File(...),
|
file: List[UploadFile] = File(...),
|
||||||
current_user = Depends(get_current_user)
|
current_user = Depends(get_current_user)
|
||||||
):
|
):
|
||||||
"""上传文档"""
|
"""上传文档"""
|
||||||
if not file:
|
if not file:
|
||||||
return get_json_result(data=False, message="No file part!", code=settings.RetCode.ARGUMENT_ERROR)
|
return get_json_result(data=False, message="No file part!", code=settings.RetCode.ARGUMENT_ERROR)
|
||||||
|
|
||||||
if not file.filename or file.filename == "":
|
valid_files: List[UploadFile] = []
|
||||||
return get_json_result(data=False, message="No file selected!", code=settings.RetCode.ARGUMENT_ERROR)
|
for upload_file in file:
|
||||||
if len(file.filename.encode("utf-8")) > FILE_NAME_LEN_LIMIT:
|
if not upload_file or not upload_file.filename:
|
||||||
return get_json_result(data=False, message=f"File name must be {FILE_NAME_LEN_LIMIT} bytes or less.", code=settings.RetCode.ARGUMENT_ERROR)
|
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)
|
e, kb = KnowledgebaseService.get_by_id(kb_id)
|
||||||
if not e:
|
if not e:
|
||||||
@@ -90,7 +97,7 @@ async def upload(
|
|||||||
if not check_kb_team_permission(kb, current_user.id):
|
if not check_kb_team_permission(kb, current_user.id):
|
||||||
return get_json_result(data=False, message="No authorization.", code=settings.RetCode.AUTHENTICATION_ERROR)
|
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:
|
if err:
|
||||||
return get_json_result(data=uploaded_files, message="\n".join(err), code=settings.RetCode.SERVER_ERROR)
|
return get_json_result(data=uploaded_files, message="\n".join(err), code=settings.RetCode.SERVER_ERROR)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user