From 5c8ad6702ad65545e79f2419300e1c1283c6d698 Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Fri, 14 Mar 2025 15:01:37 +0800 Subject: [PATCH] Fix: check the file name length. (#6083) ### What problem does this PR solve? #6060 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- api/apps/sdk/doc.py | 9 +++++++++ .../test_upload_documents.py | 5 ++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/api/apps/sdk/doc.py b/api/apps/sdk/doc.py index bd8c60c74..6ecb2fa97 100644 --- a/api/apps/sdk/doc.py +++ b/api/apps/sdk/doc.py @@ -136,6 +136,10 @@ def upload(dataset_id, tenant_id): return get_result( message="No file selected!", code=settings.RetCode.ARGUMENT_ERROR ) + if len(file_obj.filename.encode("utf-8")) >= 128: + return get_result( + message="File name should be less than 128 bytes.", code=settings.RetCode.ARGUMENT_ERROR + ) ''' # total size total_size = 0 @@ -246,6 +250,11 @@ def update_doc(tenant_id, dataset_id, document_id): DocumentService.update_meta_fields(document_id, req["meta_fields"]) if "name" in req and req["name"] != doc.name: + if len(req["name"].encode("utf-8")) >= 128: + return get_result( + message="The name should be less than 128 bytes.", + code=settings.RetCode.ARGUMENT_ERROR, + ) if ( pathlib.Path(req["name"].lower()).suffix != pathlib.Path(doc.name.lower()).suffix diff --git a/sdk/python/test/test_http_api/test_file_management_within_dataset/test_upload_documents.py b/sdk/python/test/test_http_api/test_file_management_within_dataset/test_upload_documents.py index 2f55532ae..b6e7b7271 100644 --- a/sdk/python/test/test_http_api/test_file_management_within_dataset/test_upload_documents.py +++ b/sdk/python/test/test_http_api/test_file_management_within_dataset/test_upload_documents.py @@ -139,10 +139,9 @@ class TestUploadDocuments: # filename_length = 129 fp = create_txt_file(tmp_path / f"{'a' * (DOCUMENT_NAME_LIMIT - 3)}.txt") res = upload_documnets(get_http_api_auth, ids[0], [fp]) - assert res["code"] == 500 + assert res["code"] == 101 assert ( - res["message"] - == f"{'a' * (DOCUMENT_NAME_LIMIT - 3)}.txt: Exceed the maximum length of file name!" + res["message"].find("128") >= 0 ) def test_invalid_dataset_id(self, get_http_api_auth, tmp_path):