我想知道是否有一种方法可以查明客户端是否关闭了一段StreamingResponseBody时间内数据仍在写入输出流的连接。我的 Spring Boot 控制器如下所示:
@RestController
public class MyController {
@PostMapping(value = "/zip")
public ResponseEntity<StreamingResponseBody> zip(HttpServletResponse response) {
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment;filename=download.zip");
StreamingResponseBody responseBody = outputStream -> {
try (ZipOutputStream zipOut = new ZipOutputStream(outputStream)) {
// loop over files
final ZipEntry zipEntry = new ZipEntry(path);
zipOut.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = bufferedInputStream.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
zipOut.closeEntry();
} catch (IOException e) {
// error handling
}
}
return new ResponseEntity<>(responseBody, HttpStatus.OK);
} …Run Code Online (Sandbox Code Playgroud)