From f2c43713b16e821f4a1ae97804c60f18734d5f6a Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期五, 13 十二月 2024 17:25:12 +0800 Subject: [PATCH] 问题优化 --- app/api/excel.py | 63 +++++++++++++++++++++++-------- 1 files changed, 47 insertions(+), 16 deletions(-) diff --git a/app/api/excel.py b/app/api/excel.py index 4110527..77ae5fd 100644 --- a/app/api/excel.py +++ b/app/api/excel.py @@ -56,45 +56,76 @@ if file.filename == '': return JSONResponse(content={"error": "娌℃湁閫夋嫨鏂囦欢"}, status_code=400) if file and allowed_file(file.filename): - filename = secure_filename(file.filename) - save_path = os.path.join(SOURCE_FILES_PATH, filename) + save_path = os.path.join(SOURCE_FILES_PATH, file.filename) with open(save_path, 'wb') as buffer: shutil.copyfileobj(file.file, buffer) save_path_list.append(save_path) else: return JSONResponse(content={"error": "涓嶅厑璁哥殑鏂囦欢绫诲瀷"}, status_code=400) - return JSONResponse(content={"message": "鏂囦欢涓婁紶鎴愬姛", "paths": save_path_list}, status_code=201) + return JSONResponse(content={"code": 200, "msg": "", "data": {}}, status_code=200) # ws://localhost:9201/api/document/ws/excel @router.websocket("/ws/excel") async def ws_excel(websocket: WebSocket): await websocket.accept() + + create_dir_if_not_exists(SOURCE_FILES_PATH) + create_dir_if_not_exists(EXCEL_FILES_PATH) + while True: - data = await websocket.receive_json() - action = data.get("action") + data = await websocket.receive_text() try: - if action == "process": - clear_directory(EXCEL_FILES_PATH) + if data == "\"鍚堝苟Excel\"": output_file_path = run_conformity() - await websocket.send_json({"step_message": "寮�濮嬪悎骞�"}) - elif action == "inquire": + output_file_path = run_conformity() files = os.listdir(EXCEL_FILES_PATH) - if not files: - await websocket.send_json({"step_message": "姝e湪鍚堝苟涓�"}) + if files: + first_file = files[0] + file_name = os.path.basename(first_file) + file_url = f"./api/document/download/{first_file}" + await websocket.send_json({ + "message": "鏂囨。鍚堝苟鎴愬姛锛�", + "type": "stream", + "files": [{ + "file_name": file_name, + "file_url": file_url + }] + }) + await websocket.send_json({ + "message": "鏂囨。鍚堝苟鎴愬姛锛�", + "type": "close", + }) else: - await websocket.send_json({"step_message": "鏂囨。鍚堝苟鎴愬姛锛�"}) - elif action == "download": + await websocket.send_json({"error": "鍚堝苟鎿嶄綔鏈敓鎴愭枃浠�", "type": "stream", "files": []}) + elif data == "\"鏌ヨ鍚堝苟杩涘害\"": files = os.listdir(EXCEL_FILES_PATH) if not files: - await websocket.send_json({"error": "鐩綍涓嬫病鏈夌敓鎴愮殑鏂囦欢"}) + await websocket.send_json({"step_message": "姝e湪鍚堝苟涓�", "type": "stream", "files": []}) + else: + await websocket.send_json({"step_message": "鏂囨。鍚堝苟鎴愬姛锛�", "type": "stream", "files": []}) + elif data == "\"鑾峰彇鏂囦欢\"": + files = os.listdir(EXCEL_FILES_PATH) + if not files: + await websocket.send_json({"error": "鐩綍涓嬫病鏈夌敓鎴愮殑鏂囦欢", "type": "stream", "files": []}) else: first_file = files[0] - await websocket.send_json({"step_message": "鍚堝苟鏂囦欢宸茬敓鎴�", "download_url": f"/download/{first_file}"}) + file_name = os.path.basename(first_file) + file_url = f"./api/document/download/{first_file}" + await websocket.send_json({ + "step_message": "鏂囨。鍚堝苟鎴愬姛锛�", + "type": "stream", + "files": [{ + "file_name": file_name, + "file_url": file_url + }] + }) else: - await websocket.send_json({"error": "鏈煡鎸囦护"}) + print(f"Received data: {data}") + await websocket.send_json({"error": "鏈煡鎸囦护", "data": str(data)}) except Exception as e: await websocket.send_json({"error": str(e)}) + await websocket.close() @router.get("/download/{filename}") -- Gitblit v1.8.0