将字节内容存储在S3中

时间:2019-05-29 14:09:34

标签: java amazon-web-services spring-boot amazon-s3

我需要将二进制(byte[])内容(PDF文件)保存到S3。

我不想在HDD中存在纸质副本,正在动态生成pdf,然后需要将其发送到S3。

Java AWS开发工具包AmazonS3.putObject()需要在方法签名中输入File,如何直接传递二进制内容而不将其保存到硬盘中?

2 个答案:

答案 0 :(得分:3)

SDK提供了采用InputStreamObjectMetadata而不是File的方法。例如,有putObject(String bucketName, String key, InputStream input, ObjectMetadata metadata)

如果您不想创建文件,请使用提供的方法之一并提供ByteArrayInputStream

答案 1 :(得分:1)

您可以使用以下方法存储AWS文件。

  

PutObjectResult putObject(String bucketName,String key,   InputStream输入,ObjectMetadata元数据)

Aws还根据适用性提供了以下重载方法。

  

PutObjectResult putObject(PutObjectRequest   putObjectRequest)

     

PutObjectResult putObject(String bucketName,   字符串键,文件文件)

     

PutObjectResult putObject(String bucketName,   字符串键,字符串内容)

您可以将byte []转换为InputStream,并且可以传入上述方法。请参阅下面的javadocs中的aws。

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/PutObjectRequest.html