diff --git a/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java b/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java index 455b227016907114d77c115eb423b3618eeb8770..956d7737c0241a4cd4730815a56c0cb93ec1345f 100644 --- a/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java +++ b/backend-src/src/main/java/com/taoes/simpledocker/controller/ImageController.java @@ -107,8 +107,7 @@ public class ImageController { * 保存镜像 */ @GetMapping("/save/{nameTag}") - public ResponseModel save(@PathVariable String nameTag, HttpServletRequest request,HttpServletResponse response) { + public void save(@PathVariable String nameTag, HttpServletRequest request,HttpServletResponse response) { imageService.save(nameTag,request,response); - return ResponseModel.ok("OK"); } } diff --git a/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java b/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java index 7f5ba31166ad2813a2e1b95121ec7327990fdd05..8c31f81ef2cd86193a65b41c41ceb3283bc48e00 100644 --- a/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java +++ b/backend-src/src/main/java/com/taoes/simpledocker/service/imple/ImageServiceImpl.java @@ -1,5 +1,6 @@ package com.taoes.simpledocker.service.imple; +import cn.hutool.core.date.DateUtil; import com.github.dockerjava.api.command.SaveImageCmd; import com.taoes.simpledocker.model.exception.NotFoundClientException; @@ -18,6 +19,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -110,18 +112,18 @@ public class ImageServiceImpl implements ImageService { final DockerClient dockerClient = factory.get(); String[] nameTagArr = nameTag.split("\\:"); //docker save - InputStream input = dockerClient.saveImageCmd(nameTagArr[0]).withTag(nameTagArr[1]).exec(); - try { - response.setContentType("application/ms-excel;charset=UTF-8"); - response.setHeader("Content-Disposition","attachment;filename="+nameTag+".zip"); + SaveImageCmd saveImage = dockerClient.saveImageCmd(nameTagArr[0]).withTag(nameTagArr[1]); + try (InputStream input = saveImage.exec(); + ServletOutputStream output = response.getOutputStream()) { + String curentTime = DateUtil.format(DateUtil.date(), "yyyyMMdd_HHmmss_"); + response.setContentType("application/x-zip-compressed;charset=UTF-8"); + response.setHeader("Content-Disposition","attachment;filename=" + curentTime + nameTag + ".zip"); // 循环取出流中的数据 byte[] b = new byte[1024]; int len; while ((len = input.read(b)) > 0) { - response.getOutputStream().write(b, 0, len); + output.write(b, 0, len); } - input.close(); - response.getOutputStream().close(); } catch (IOException e) { e.printStackTrace(); }