老迟到的蚂蚁.java
import org.springframework.core.io.FileSystemResource;import org.springframework.core.io.Resource;import org.springframework.stereotype.Component;import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;import javax.servlet.http.HttpServletRequest;import java.nio.file.Path;@Componentpublic class 老迟到的蚂蚁 extends ResourceHttpRequestHandler { public final static String ATTR_FILE = "NON-STATIC-FILE"; @Override protected Resource getResource(HttpServletRequest request) { final Path filePath = (Path) request.getAttribute(ATTR_FILE); return new FileSystemResource(filePath); }} @Autowired private 老迟到的蚂蚁 nonStaticResourceHttpRequestHandler; @GetMapping("/getFile") public void getFile(HttpServletRequest request, HttpServletResponse response, String filePath) throws Exception { if (Files.exists(Paths.get(filePath))) { String mimeType = Files.probeContentType(Paths.get(filePath)); if (!StringUtils.isEmpty(mimeType)) { response.setContentType(mimeType); } request.setAttribute(老迟到的蚂蚁.ATTR_FILE, Paths.get(filePath)); nonStaticResourceHttpRequestHandler.handleRequest(request, response); } else { response.setStatus(HttpServletResponse.SC_NOT_FOUND); response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); } } @GetMapping("/getFile") public void getFile(HttpServletRequest request, HttpServletResponse response, String filePath) throws Exception { if (Files.exists(Paths.get(filePath))) { String mimeType = Files.probeContentType(Paths.get(filePath)); if (!StringUtils.isEmpty(mimeType)) { response.setContentType(mimeType); } request.setAttribute(老迟到的蚂蚁.ATTR_FILE, Paths.get(filePath)); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + MSCommonUtils.getFileName(filePath)); nonStaticResourceHttpRequestHandler.handleRequest(request, response); } else { response.setStatus(HttpServletResponse.SC_NOT_FOUND); response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); } }