Procházet zdrojové kódy

模板文件下载

Zhangtf před 4 dny
rodič
revize
c6b457eadc

+ 54 - 36
xzl-admin/src/main/java/com/xzl/web/service/impl/KnowledgeFileServiceImpl.java

@@ -263,45 +263,63 @@ public class KnowledgeFileServiceImpl implements KnowledgeFileService {
     }
     @Override
     public void downloadTemplate(HttpServletResponse response) {
-        String fileUrl = "http://127.0.0.1:52883/browser/mbb/%E6%A8%A1%E6%9D%BF.doc";
-        try {
-            URL url = new URL(fileUrl);
-            HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
-            int responseCode = httpConn.getResponseCode();
-
-            // 检查响应码是否为HTTP_OK
-            if (responseCode == HttpURLConnection.HTTP_OK) {
-                InputStream inputStream = httpConn.getInputStream();
-                String disposition = httpConn.getHeaderField("Content-Disposition");
-                String fileName = "模板.doc"; // 默认文件名
-
-                if (disposition != null) {
-                    int index = disposition.indexOf("filename=");
-                    if (index > 0) {
-                        fileName = disposition.substring(index + 9);
-                    }
-                }
-
-                // 设置响应头
-                response.setContentType("application/octet-stream");
-                response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\"");
-
-                OutputStream outputStream = response.getOutputStream();
-
-                byte[] buffer = new byte[4096];
-                int bytesRead;
-                while ((bytesRead = inputStream.read(buffer)) != -1) {
-                    outputStream.write(buffer, 0, bytesRead);
-                }
+//        String fileUrl = "http://127.0.0.1:52883/browser/mbb/%E6%A8%A1%E6%9D%BF.doc";
+//        try {
+//            URL url = new URL(fileUrl);
+//            HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
+//            int responseCode = httpConn.getResponseCode();
+//
+//            // 检查响应码是否为HTTP_OK
+//            if (responseCode == HttpURLConnection.HTTP_OK) {
+//                InputStream inputStream = httpConn.getInputStream();
+//                String disposition = httpConn.getHeaderField("Content-Disposition");
+//                String fileName = "模板.doc"; // 默认文件名
+//
+//                if (disposition != null) {
+//                    int index = disposition.indexOf("filename=");
+//                    if (index > 0) {
+//                        fileName = disposition.substring(index + 9);
+//                    }
+//                }
+//
+//                // 设置响应头
+//                response.setContentType("application/octet-stream");
+//                response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\"");
+//
+//                OutputStream outputStream = response.getOutputStream();
+//
+//                byte[] buffer = new byte[4096];
+//                int bytesRead;
+//                while ((bytesRead = inputStream.read(buffer)) != -1) {
+//                    outputStream.write(buffer, 0, bytesRead);
+//                }
+//
+//                outputStream.flush();
+//                inputStream.close();
+//                outputStream.close();
+//            } else {
+//                throw new RuntimeException("文件下载失败,服务器响应代码: " + responseCode);
+//            }
+//        } catch (Exception e) {
+//            throw new RuntimeException("文件下载过程中发生错误: " + e.getMessage(), e);
+//        }
+
+        try (InputStream inputStream = minioUtil.downLoad("mbb", "/模板.doc");
+             OutputStream outputStream = response.getOutputStream()) {
 
-                outputStream.flush();
-                inputStream.close();
-                outputStream.close();
-            } else {
-                throw new RuntimeException("文件下载失败,服务器响应代码: " + responseCode);
+            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+            response.setHeader(
+                    HttpHeaders.CONTENT_DISPOSITION,
+                    "attachment; filename=" + URLEncoder.encode("/模板.doc", "UTF-8")
+            );
+            byte[] buffer = new byte[1024];
+            int bytesRead;
+            while ((bytesRead = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, bytesRead);
             }
+            outputStream.flush();
         } catch (Exception e) {
-            throw new RuntimeException("文件下载过程中发生错误: " + e.getMessage(), e);
+            throw new RuntimeException("文件下载失败: " + e.getMessage(), e);
         }
     }
 }

+ 1 - 1
xzl-ui/src/views/fileTree/folder/index.vue

@@ -782,7 +782,7 @@ export default {
       try {
         // 等待Promise解析,获取响应对象
         const response = await download(row.fileId) // fileId替换为实际的文件标识
-        console.log(response)
+        console.log(row.fileName)
         this.parseBlob(response, row.fileName)
 
       } catch (error) {