2017-04-04 2 views
0

Ich habe bereits PlayFramework-App läuft, aber ich bin dabei, es zu Heroku zu migrieren. Weil ich auf Heroku kein lokales Dateisystem wie in meiner App verwenden kann. Ich bin gezwungen, Amazon S3 zu verwenden, aber ich weiß nicht, wie ich das Erstellen von Thumbnails umschreiben soll. Dafür verwende ich:Heroku PlayFramework - thumbnail erstellen

https://github.com/coobird/thumbnailator

Thumbnails.of(picture.getFile()).size(300,300).toFile(new File("public/images/data", thumb)); 

Das Problem ist, dass ich das bei Heroku nicht tun können, weil Datei wird nicht gespeichert werden.

Wie erstelle ich dann Thumbnails? Wenn ich keinen anderen Dienst verwenden möchte, der Thumbnails für mich erzeugt und sie zu s3 irgendwie speichert ...

Ehrlich, wenn ich wissen würde, wieviele verschiedene Dienste ich für einfache Seite mit Java benötigen würde, dann würde ich bei bleiben php forever ...

Antwort

1

In Heroku (wie in vielen PaaS) gibt es kein persistentes Dateisystem. Sie haben jedoch Zugriff auf das temporäre Verzeichnis. So könnte man es in eine temporäre Datei speichern

File temp = File.createTempFile("prefix", "suffix").getAbsolutePath; 
Thumbnails.of(picture.getFile()).size(300,300).toFile(temp, thumb)); 

Dann die Datei nehmen und es auf S3 hochladen. Wenn Sie unbedingt darauf bestehen, S3 nicht zum Speichern von Binärdateien zu verwenden, können Sie den Dateiinhalt base64 erstellen und in der Datenbank speichern. (Siehe einige Vor-/Nachteile für einen solchen Ansatz)