Amazon S3サーバからファイルを返すにはサーブレットが必要です。サーバーのみがアクセスするための認証情報を持っていますが、S3バケットは公開されていません。私はそれを変えることはできません。私はデータストリームを使うように言われましたが、それはとても遅いです。 テストするために、私はサムネイルを持つ小さなproyectを持っています。あなたが1つをクリックすると、完全なイメージで新しいタブが開きます。 5メガバイトの画像は、読み込むのに約1分かかります。それは遅い。Amazon S3からのサーブレットの読み込みが遅い
S3から読み込み、データ・ストリームを返す関数:
public void downloadDirectlyFromS3(String s3Path, String fileName, HttpServletResponse response) {
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
s3Client.setEndpoint(S3ENDPOINT);
S3Object s3object = s3Client.getObject(new GetObjectRequest(s3Path, fileName));
byte[] buffer = new byte[5 * 1024 * 1024];
try {
InputStream input = s3object.getObjectContent();
ServletOutputStream output = response.getOutputStream();
for (int length = 0; (length = input.read(buffer)) > 0;) {
output.write(buffer, 0, length);
}
output.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Thxをしていたが、私はそれをしようとすると、作品の場合は、この問題のため答えを承認し、このサンプルの応答で、このIPとcountry.binダウンロードした外観を持っていた;) –
私は休日を過ごしていました。それは問題を解決しませんでした.TransferManagerではわずかに遅くなっています。問題は、それが私が制御できない呼び出しであり、すべてのファイルで一度呼び出され、次の呼び出しを開始するまで待たなければならないということです。そのため、TransferManagerの有用性の大部分は失われます。とにかくThx。 –