我需要将二进制(byte[]
)内容(PDF文件)保存到S3。
我不想在HDD中存在纸质副本,正在动态生成pdf,然后需要将其发送到S3。
Java AWS开发工具包AmazonS3.putObject()
需要在方法签名中输入File
,如何直接传递二进制内容而不将其保存到硬盘中?
答案 0 :(得分:3)
SDK提供了采用InputStream
和ObjectMetadata
而不是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