diff --git a/server/api/conversation_routes.py b/server/api/conversation_routes.py index 5319831..b95cf12 100644 --- a/server/api/conversation_routes.py +++ b/server/api/conversation_routes.py @@ -306,4 +306,26 @@ async def stop_generation_handler(message_id: str = None): message = ( f"已发出停止指令,消息ID: {message_id}" if message_id else "已发出停止指令" ) - return {"success": True, "message": message} \ No newline at end of file + return {"success": True, "message": message} + + +async def delete_attachment_handler(url: str): + """删除附件处理器 - 从 OSS 删除文件""" + try: + from utils.oss_uploader import delete_file, extract_object_key_from_url + + object_key = extract_object_key_from_url(url) + if not object_key: + raise HTTPException(status_code=400, detail="无效的文件 URL") + + success = delete_file(object_key) + if success: + return {"success": True, "message": "文件删除成功"} + else: + raise HTTPException(status_code=500, detail="文件删除失败") + + except HTTPException: + raise + except Exception as e: + log_error(f"删除附件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"删除失败: {str(e)}") \ No newline at end of file diff --git a/server/main.py b/server/main.py index 39cf28f..d4bdaaf 100644 --- a/server/main.py +++ b/server/main.py @@ -55,6 +55,7 @@ load_dotenv() # ── 会话管理路由处理器 ──────────────────────────────────────────────── from api.conversation_routes import (add_message_handler, + delete_attachment_handler, delete_conversation_handler, get_conversation_handler, get_conversations_handler, @@ -227,6 +228,11 @@ async def stop_generation_by_id(message_id: str): return await stop_generation_handler(message_id) +@app.delete("/api/chat-ui/attachment") +async def delete_attachment(url: str): + return await delete_attachment_handler(url) + + # ── 程序入口 ────────────────────────────────────────────────────────── if __name__ == "__main__": import uvicorn diff --git a/src/components/chat/ChatMain.vue b/src/components/chat/ChatMain.vue index a48f475..85f0eb0 100644 --- a/src/components/chat/ChatMain.vue +++ b/src/components/chat/ChatMain.vue @@ -28,6 +28,13 @@