【发布时间】:2018-04-26 13:00:23
【问题描述】:
我正在尝试使用 Spring Boot Rest API 为我存储在 S3 上的 PDF 之一提供服务。
以下是我的代码:
byte[] targetArray = null;
InputStream is = null;
S3Object object = s3Client
.getObject(new GetObjectRequest("S3_BUCKET_NAME", "prefixUrl"));
InputStream objectData = object.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(objectData));
char[] charArray = new char[8 * 1024];
StringBuilder builder = new StringBuilder();
int numCharsRead;
while ((numCharsRead = reader.read(charArray, 0, charArray.length)) != -1) {
builder.append(charArray, 0, numCharsRead);
}
reader.close();
objectData.close();
object.close();
targetArray = builder.toString().getBytes();
is = new ByteArrayInputStream(targetArray);
return ResponseEntity.ok().contentLength(targetArray.length).contentType(MediaType.APPLICATION_PDF)
.cacheControl(CacheControl.noCache()).header("Content-Disposition", "attachment; filename=" + "testing.pdf")
.body(new InputStreamResource(is));
当我使用邮递员访问我的 API 时,我可以下载 PDF 文件,但问题是它完全是空白的。可能是什么问题?
S3 流式传输数据,不保留缓冲区,数据为二进制 (PDF),因此如何使用 Rest API 将此类数据提供给服务器。
如何解决?
【问题讨论】:
-
为什么不使用 Amazon AWS 开发工具包? docs.aws.amazon.com/sdk-for-java/v1/developer-guide/…
-
@kryger 是的,我已经浏览了上面的链接,但我仍然面临这个问题。
-
@kryger 实际上我试图直接发送内容。由于Red Boy已经解决了我的问题,所以我删除了java组中发布的其他问题。感谢您的支持和帮助。
标签: amazon-s3 aws-sdk aws-java-sdk