我正在實施幫助程序類來處理來自我的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