@@ -516,29 +516,10 @@ async def run_rechunks(context: TaskContext):
516516
517517@knowledge .get ("/databases/{db_id}/documents/{doc_id}/download" )
518518async def download_document (db_id : str , doc_id : str , request : Request , current_user : User = Depends (get_admin_user )):
519- # TODO: 可以考虑修改为minio下载,将文件相关逻辑完全迁移到minio
520519 """下载原始文件"""
521520 logger .debug (f"Download document { doc_id } from { db_id } " )
522521 try :
523522 file_info = await knowledge_base .get_file_basic_info (db_id , doc_id )
524- if not file_info :
525- raise HTTPException (status_code = 404 , detail = "File not found" )
526-
527- file_path = file_info .get ("meta" , {}).get ("path" )
528- if not file_path :
529- raise HTTPException (status_code = 404 , detail = "File path not found in metadata" )
530-
531- # 安全检查:验证文件路径
532- from src .knowledge .utils .kb_utils import validate_file_path
533-
534- try :
535- normalized_path = validate_file_path (file_path , db_id )
536- except ValueError as e :
537- raise HTTPException (status_code = 403 , detail = str (e ))
538-
539- if not os .path .exists (normalized_path ):
540- raise HTTPException (status_code = 404 , detail = f"File not found on disk: { file_info = } " )
541-
542523 # 获取文件扩展名和MIME类型,解码URL编码的文件名
543524 filename = file_info .get ("meta" , {}).get ("filename" , "file" )
544525 logger .debug (f"Original filename from database: { filename } " )
@@ -1075,9 +1056,7 @@ async def upload_file(
10751056
10761057 basename , ext = os .path .splitext (file .filename )
10771058 # TODO:
1078- # 如果知识库中的文件多了,上传了内容修改过的同名文件应当把旧的文件删除掉
1079- # 否则会保存两份相同的文档,建议固定salt,上传逻辑是:
1080- # 若上传了同名文件时且hash相同则报错,不同则直接替换同名文件
1059+ # 后续修改为遇到同名文件则在上传区域提示,是否删除旧文件,同时 filename name 也就不用添加 hash 了
10811060 filename = f"{ basename } _{ hashstr (basename , 4 , with_salt = True , salt = 'fixed_salt' )} { ext } " .lower ()
10821061
10831062 file_path = os .path .join (upload_dir , filename )
0 commit comments