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