Пытаюсь отправлять файл:
public Publisher<Void> download(HttpServerRequest req, HttpServerResponse resp) {
try {
String filePath = reportService.getFilePath(Integer.parseInt(req.param("id")));
if (filePath == null) {
return resp
.status(HttpResponseStatus.NOT_FOUND)
;
}
Path file = Path.of(filePath);
String filename = URLEncoder.encode(
file.getFileName().toString(), StandardCharsets.UTF_8).replace("+", "%20");
return resp
.status(HttpResponseStatus.OK)
.addHeader(ACCESS_CONTROL_ALLOW_ORIGIN, "*") // CORS
.addHeader(ACCESS_CONTROL_EXPOSE_HEADERS, "filename")
.addHeader("filename", filename)
.addHeader(CONTENT_TYPE, "application/octet-stream")
// .sendFile(file)
// .sendString(Mono.just("OLOLO"))
;
} catch (Exception e) {
return getErrorResponse(resp, e);
}
}
Если делаю
.sendFile(file)
то получаю ошибку
ERROR r.n.http.server.HttpServerOperations - [cc0803bd-1, L:/127.0.0.1:8081 - R:/127.0.0.1:52065] Error finishing response. Closing connection
Если делаю
.sendString(Mono.just("OLOLO"))
то скачивается файл с содержимым OLOLO, т.е. всё остальное (заголовки и пр.) нормальное. А как собственно файл отправить?