是否可以通过Amazon (spring )服务流压缩文件,而不必实际下载服务中的整个文件?
对于上下文,假设在S3中有一个大文件(在gigs中),您希望让用户下载它,但是您希望在授予这些用户对文件的访问之前授权他们,而不让存储桶或对象公开。
其中一种方法是下载java服务中的文件,然后在响应中发送它。但是,如果文件太大,有时磁盘空间是不够的。
因此,问题是,是否有一种方法可以将文件从S3 ( java服务充当某种代理)流到客户端,而不实际下载它。
PS:我知道另一种选择是使用短时间的预签名URLs。
发布于 2022-08-24 19:19:30
您可以尝试使用StreamingOutput (JAX/泽西)。
var s3Object = baseTransferManager.getAmazonS3Client().getObject(file);
StreamingOutput stream = (outputStream -> {
IOUtils.copy(s3Object.getObjectContent(), outputStream);
});
return Response.ok(stream, MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=\"" + fileName + \"")
.build();这个答案是基于JAX-RS/Jersey 2 file download - Is there a common API for server and generated client proxy中给出的信息
https://stackoverflow.com/questions/72141925
复制相似问题