From aaf39e16669ded322e8b82afc11e732f3b4e6d36 Mon Sep 17 00:00:00 2001 From: 秦芳睿 <1425609123@qq.com> Date: 星期二, 11 三月 2025 14:17:39 +0800 Subject: [PATCH] feat(SMTAIServer):增加文件内容传输并优化文件处理 --- JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java | 43 +++++++++++++++++++++++-------------------- 1 files changed, 23 insertions(+), 20 deletions(-) diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java index 3f5b232..0db8dda 100644 --- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java +++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTJavaAIControl.java @@ -3,13 +3,8 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -97,10 +92,16 @@ { for(MultipartFile file : files) { - String fileId = SMTStatic.newUUID(); + String fileText=null; + String fileSuffix = (String) SMTAIServerApp.getApp().getGlobalConfig("file_suffix", false); String fileName = new File(file.getOriginalFilename()).getName(); byte[] fileData = readAttachFile(file); - String fileText = new String(fileData, "UTF-8"); + if (fileSuffix.contains(fileName.substring(fileName.lastIndexOf(".") + 1))) { + fileText = SMTAIServerApp.fileTranslTxt(file); + }else { + fileText = new String(fileData, "UTF-8"); + } + String fileId = SMTStatic.newUUID(); db.executeSQL( " INSERT INTO chat_history_attach(attach_id, attach_type, attach_title, attach_bytes)" + " VALUES(?,?,?,?)", new Object[] { @@ -1307,20 +1308,20 @@ return tranReq.returnJson(jsonWr); } - - public ModelAndView callLLM(SMTAIServerRequest tranReq) throws Exception + + public ModelAndView callLLM(SMTAIServerRequest tranReq) throws Exception { String llmId = tranReq.convParamToString("llm_id", false); Json jsonSystems = tranReq.convParamToJson("system_json", false); String question = tranReq.convParamToString("question", true); boolean answerIsJson = tranReq.convParamToBoolean("answer_is_json", true); - - + + SMTJsonWriter jsonWr = tranReq.newReturnJsonWriter(true, null, null); SMTLLMConnect conn = SMTAIServerApp.getApp().allocLLMConnect(llmId); - + List<String> listSystem = new ArrayList<>(); - + if(jsonSystems != null) { for(Json jsonSystem : jsonSystems.asJsonList()) @@ -1328,7 +1329,7 @@ listSystem.add(jsonSystem.asString()); } } - + String answer = conn.callWithMessage(listSystem, question, tranReq); if(answerIsJson) { @@ -1341,7 +1342,6 @@ return tranReq.returnJson(jsonWr); } - public void downloadFileByFileId(SMTAIServerRequest tranReq, HttpServletResponse response) throws Exception { String fileId = tranReq.convParamToString("file_id", true); // 鑾峰彇璇锋眰涓殑file_id SMTDatabase db = SMTAIServerApp.getApp().allocDatabase(); @@ -1356,16 +1356,19 @@ // 鑾峰彇鏂囦欢淇℃伅 DBRecord fileRecord = dbRecords.getRecords().get(0); String attachTitle = fileRecord.getString("attach_title"); // 鑾峰彇鏂囦欢鏍囬 - String attachBytes = fileRecord.getString("attach_bytes"); - byte[] bytes = attachBytes.getBytes(); + + // 鑾峰彇鏂囦欢鐨勫瓧鑺傛暟鎹紝鍋囪杩斿洖鐨勬槸瀛楄妭鏁扮粍 + byte[] bytes = (byte[]) fileRecord.getValue("attach_bytes"); // 鑾峰彇瀛楄妭鏁版嵁 + // 璁剧疆鍝嶅簲澶村拰鏂囦欢鍚� String fileName = attachTitle != null ? attachTitle : "downloaded_file"; response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); response.setContentType("application/octet-stream"); - response.getOutputStream().write(bytes); - response.getOutputStream().flush(); + response.getOutputStream().write(bytes); // 鍐欏叆瀛楄妭鏁版嵁 + response.getOutputStream().flush(); } catch (Exception e) { throw new Exception("Error processing file download: " + e.getMessage()); } } + } -- Gitblit v1.9.3