我在WebDav服务器上有文件。
我有一个JEE 7 REST API,当且仅当提供了适当的凭据时,该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端点的唯一目的是验证凭据。
是否可以让我们的端点将文件服务器中的文件“传递”回客户端?还是将文件流式传输回客户端,而不是下载整个文件然后再发送回客户端?