From e8ada3789f1d07c16990afb3566d18dabead6474 Mon Sep 17 00:00:00 2001 From: tjq Date: Sun, 20 Dec 2020 23:14:44 +0800 Subject: [PATCH] fix: can't download log file when sever and browser are not in the same network --- .../web/controller/InstanceController.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java index ae36a78a..61d806f2 100644 --- a/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java +++ b/powerjob-server/src/main/java/com/github/kfcfans/powerjob/server/web/controller/InstanceController.java @@ -17,6 +17,7 @@ import com.github.kfcfans.powerjob.server.web.request.QueryInstanceRequest; import com.github.kfcfans.powerjob.server.web.response.InstanceDetailVO; import com.github.kfcfans.powerjob.server.web.response.InstanceInfoVO; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; @@ -28,6 +29,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.net.URL; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -92,6 +94,24 @@ public class InstanceController { OmsFileUtils.file2HttpResponse(file, response); } + @GetMapping("/downloadLog4Console") + public void downloadLog4Console(Long appId, Long instanceId , HttpServletResponse response) throws Exception { + // 获取内部下载链接 + String downloadUrl = instanceLogService.fetchDownloadUrl(appId, instanceId); + // 先下载到本机 + String logFilePath = OmsFileUtils.genTemporaryWorkPath() + String.format("powerjob-%s-%s.log", appId, instanceId); + File logFile = new File(logFilePath); + + try { + FileUtils.copyURLToFile(new URL(downloadUrl), logFile); + + // 再推送到浏览器 + OmsFileUtils.file2HttpResponse(logFile, response); + } finally { + FileUtils.forceDelete(logFile); + } + } + @PostMapping("/list") public ResultDTO> list(@RequestBody QueryInstanceRequest request) {