【发布时间】:2021-12-13 13:44:36
【问题描述】:
我的 Aws S3 bukcet 中有一个图像文件 001.jpg。 我正在尝试使用 Java 下载该文件。下面是一段用于从 s3 存储桶下载图像文件的代码。
if (StringUtils.isNotEmpty(s3Key)) {
AmazonS3Connector s3 = AmazonS3Connector.getInstance();
byte[] data = null;
try {
final S3Object s3Object = s3.getClient().getObject(S3_BUCKET_NAME, s3Key);
final S3ObjectInputStream stream = s3Object.getObjectContent();
data = IOUtils.toByteArray(stream);
s3Object.close();
String fileName = s3Key.split("/")[1];
Map<String, String> responseHeaders = new HashMap<>();
MimetypesFileTypeMap mimetypesFileTypeMap = new MimetypesFileTypeMap();
responseHeaders.put("Content-type", mimetypesFileTypeMap.getContentType(s3Key));
responseHeaders.put("Content-Length", String.valueOf(data.length));
responseHeaders.put("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
return APIResponse.builder()
.setStatusCode(200)
.setObjectBody(data)
.setHeaders(responseHeaders)
.build();
} catch (AmazonS3Exception s3Exception) {
throw new IllegalArgumentException("File does not exists");
} catch (IOException e) {
new OutwinErrorQueue().exception(e).log();
}
}
运行此程序后,图像文件正在下载,但打开时出现以下错误。
请帮我解决这个问题。
【问题讨论】:
标签: java arrays amazon-s3 aws-lambda