package com.tofly.controller; import com.tofly.client.MinioFileClient; import com.tofly.client.MinioFileUploadClient; import com.tofly.common.core.result.ResultData; import com.tofly.vo.FileInfo; import com.tofly.vo.FileUploadResponse; import feign.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; @RestController @RequestMapping("testupload") public class TestController { @Autowired private MinioFileClient minioFileClient; @RequestMapping("/getFile") public ResultData test2(){ final FileInfo byFileId = minioFileClient.getByFileId("1"); return new ResultData().ok(byFileId); } @PostMapping("/uploadFile") public ResultData test3(@RequestPart("file") MultipartFile file){ final FileUploadResponse test = minioFileClient.uploadFile(file); return new ResultData().ok(test); } @PostMapping("/uploadZip") public ResultData testuploadzip(@RequestPart("file") MultipartFile file){ final ResponseEntity<List<FileInfo>> listResponseEntity = minioFileClient.uploadZip( file); return new ResultData().ok(listResponseEntity.getBody()); } @GetMapping("/downZip") public void testDownloadzip(String[] fileNames, HttpServletResponse response){ final ResponseEntity<byte[]> responseEntity = minioFileClient.downloadZip(fileNames); final byte[] zipContent = responseEntity.getBody(); if (zipContent != null) { response.setStatus(HttpServletResponse.SC_OK); response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=downloaded_files.zip"); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setContentLength(zipContent.length); try { response.getOutputStream().write(zipContent); response.getOutputStream().flush(); } catch (IOException e) { e.printStackTrace(); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } else { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } @GetMapping("/getFileInfo") public ResultData test3(String fileName){ final FileInfo fileInfo = minioFileClient.getFileInfo(fileName); return new ResultData().ok(fileInfo); } @GetMapping("/download") public void test3(String fileName, HttpServletResponse response){ Response feignResponse = minioFileClient.download(fileName); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); try (InputStream inputStream = feignResponse.body().asInputStream(); OutputStream outputStream = response.getOutputStream()) { byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } } catch (IOException e) { e.printStackTrace(); // Handle exception } } }