小编Sti*_*ijn的帖子

Spring StreamingResponseBody 中关闭客户端的错误处理

我想知道是否有一种方法可以查明客户端是否关闭了一段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)

java spring spring-boot

6
推荐指数
0
解决办法
1068
查看次数

标签 统计

java ×1

spring ×1

spring-boot ×1