package com.artfess.rescue.utils; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class ZipFileUtils { public static ResponseEntity downLoadFile(byte[] zipData,String fileName){ ByteArrayResource resource = new ByteArrayResource(zipData) { @Override public String getFilename() { return fileName; } }; try { // 6. 设置响应头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); // 旧版本兼容写法(手动构造Content-Disposition) String encodedFilename; encodedFilename = URLEncoder.encode(resource.getFilename(), "UTF-8") .replaceAll("\\+", "%20"); headers.add("Content-Disposition", "attachment; filename=\"" + encodedFilename + "\""); headers.setContentLength(zipData.length); headers.setCacheControl("no-cache, no-store, must-revalidate"); headers.setPragma("no-cache"); headers.setExpires(0L); return ResponseEntity.ok().headers(headers).body(resource); } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); } return ResponseEntity.notFound().build(); } }