2011-01-14 7 views

Antwort

3

Ihr Servlet erhält einen response Parameter, der eine ServletResponse Instanz ist, die eine getOutputStream Methode hat. Verwenden Sie setContentType, um den Inhaltstyp der Antwort entsprechend den Bilddaten festzulegen, verwenden Sie getOutputStream, um einen Ausgabestream zu erhalten, und führen Sie dann eine Schleife aus, lesen Sie aus Ihrem Eingabestream und schreiben Sie in Ihren Ausgabestream.

Alternativ, wenn es passt, was Sie tun (und es kann oder auch nicht), können Sie die img-Tag in Ihrem HTML-Punkt direkt auf das Bild in S3 haben und vermeiden, es vollständig durch Ihren Server zu streamen. Aber das funktioniert natürlich nur, wenn das Bild von außen erreichbar ist. Wenn du nach "s3 serve image" suchst, wirst du verschiedene Artikel (darunter auch einen von Jeff Atwood von SO) finden, die ich hier nicht zufällig auswählen werde.

4

Am einfachsten ist es, die S3-URLs direkt zu verwenden.

Für öffentliche Dateien, die sie sind im Format:

http://s3.amazonaws.com/[bucket]/[key] 

Aber wie @T.J. weist in seiner Antwort, werden diese Bilder dann von außen sichtbar sein.

Sie können jedoch Ihren Inhalt private machen, so dass es nicht über die Standard-URL und nur über eine signed, expiring url erreichbar ist. Die java AWS SDK macht es einfach, diese zu erstellen.