支持多文件上传
This commit is contained in:
@@ -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 == "":
|
||||
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(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)
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user