首页 > 解决方案 > 如何编写代码以通过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;
    }

但我想为唯一的视图编写代码,而不是下载。

标签: spring-boot

解决方案


你可以试试这个方法...

AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());        
S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
InputStream objectData = object.getObjectContent();
BufferedImage bf = ImageIO.read(objectData);

使用javax.imageio


推荐阅读