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);
私は単にAmazonS3Client
インスタンスを使用し続けるべきかTransferManager
を同じように使用する方法はありますか?
すべてのバイトをメモリにロードするのは良い方法ではありません。ファイルを返すことと、読み込むために入力ストリームを開くことを考えてください。大きなファイルを処理するときにアプリケーションがクラッシュすることはありません。 – andrucz