spring-boot - 如何编写代码以通过spring boot api查看s3存储桶图像
问题描述
我写代码供下载
@GetMapping(value= "/download/{fileName}")
public ResponseEntity<ByteArrayResource> downloadFile(@PathVariable String fileName) {
final byte[] data = amazonClient.downloadFile(fileName);
final ByteArrayResource resource = new ByteArrayResource(data);
return ResponseEntity
.ok()
.contentLength(data.length)
.header("Content-type", "application/octet-stream")
.header("Content-disposition", "attachment; filename=\"" + fileName + "\"")
.body(resource);
}
及其服务方法:-
public byte[] downloadFile(final String fileName) {
byte[] content = null;
logger.info("Downloading an object with key= " + fileName);
final S3Object s3Object = s3client.getObject(bucketName, fileName);
final S3ObjectInputStream stream = s3Object.getObjectContent();
try {
content = IOUtils.toByteArray(stream);
logger.info("File downloaded successfully.");
s3Object.close();
} catch(final IOException ex) {
logger.info("IO Error Message= " + ex.getMessage());
}
return content;
}
但我想为唯一的视图编写代码,而不是下载。
解决方案
你可以试试这个方法...
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();
BufferedImage bf = ImageIO.read(objectData);
推荐阅读
- spring-boot - 当第一次重试抛出的异常与第二次重试不同时,如何重置 Spring Kafka 消费者中的重试计数?
- c - 这里有一个关于指针算术减法到数组的问题
- arrays - 什么是一种有效的动态规划算法,可以在不删除两个相邻元素的情况下最小化数组的总成本?
- linux - 在 docker 映像中找不到命令
- python - matplotlib/cartopy - 箭袋钥匙被切断
- python - 通过 REST API 获取数据以及如何将其存储在 mysql 数据库中?
- python - 从 html 脚本中删除所有“b”标签及其内容
- android - 即使使用 singleInstance、singleTask 和 noHistory=true 运行的 Activity 的多个实例
- react-native - 反应本机加密模块问题
- ios - SwiftUI 在 iOS 13 版本中不能使用 navigationBarTitle 修饰符(已弃用),但在 iOS 14 中可以