2017-04-04 392 views
0

我已經有PlayFramework應用程序運行,但我正在將其遷移到Heroku。因爲在Heroku上我不能像我在我的應用程序中那樣使用本地文件系統。我被迫使用Amazon S3,但我不知道如何重寫縮略圖的創建。對於我使用:Heroku PlayFramework - 創建縮略圖

https://github.com/coobird/thumbnailator

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

的問題是,我不能在Heroku的做到這一點,因爲文件不會被保存。

那麼我該如何創建縮略圖呢?如果我不想使用另一種服務,它會爲我生成縮略圖並以某種方式將它們保存爲s3 ...

老實說,如果我能知道有多少種不同的服務需要使用java的簡單頁面,那麼我會留在永遠的PHP ...

回答

1

在Heroku(如在許多PaaS中),沒有永久的文件系統。但是,您可以訪問臨時目錄。 所以,你可以將其保存到一個臨時文件

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

然後將您的文件,並將其上傳到S3。 如果你嚴格堅持不使用S3存儲二進制文件,那麼你可以base64文件內容並將其保存到數據庫中。 (見這種方法的一些優點/缺點here