У меня есть файлы на сервере WebDav.
У меня есть JEE 7 REST API, который позволяет загружать эти файлы, если и только если предоставлены соответствующие учетные данные.
У нас есть решение, которое загружает файл в byte[]
и возвращает ответ октетного потока:
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getFile(@PathParam("businessKey") String businessKey, @QueryParam("file-name") String fileName,
@QueryParam("field-name") String fieldName, @QueryParam("bearer") String token) {
....
try {
byte[] file = new WebDavServices().downloadFile(fileName, fieldName, businessKey);
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM).header("Content-Disposition", "attachment; filename=\"" + fileName + "\"")
.build();
} catch (IOException e) {
LOGGER.error(e);
return Response.status(Status.INTERNAL_SERVER_ERROR).build();
}
Загрузка файла в память и последующая передача его исходному вызывающему абоненту не кажется оптимальной, поскольку единственная цель конечной точки REST - проверка учетных данных.
Возможно ли, чтобы наша конечная точка "передавала" файл с файлового сервера обратно клиенту? Или передать файл обратно клиенту вместо загрузки всего файла и последующей отправки его обратно клиенту?