我正在实施帮助程序类来处理来自我的Web应用程序的从AWS S3存储的传输。将文件下载到流而不是文件
在我班的第一个版本中,我直接使用AmazonS3Client
来处理上传和下载,但现在我发现了TransferManager
,我想重构我的代码以使用它。
问题是,在我的下载方法中,我以byte[]
的形式返回存储的文件。 TransferManager改为只有使用File
作为下载目标的方法(例如download(GetObjectRequest getObjectRequest, File file)
)。
我以前的代码是这样的:
GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, key);
S3Object s3Object = amazonS3Client.getObject(getObjectRequest);
S3ObjectInputStream objectInputStream = s3Object.getObjectContent();
byte[] bytes = IOUtils.toByteArray(objectInputStream);
是否有使用TransferManager
以同样的方式,或者我应该简单地继续使用AmazonS3Client
实例的方式吗?
将所有字节载入内存不是一个好习惯。考虑返回文件并打开一个输入流来读取它,这样在处理大文件时应用程序不会崩溃。 – andrucz