Edited at

Herokuでアップロードした画像が時間経つと消える問題

More than 1 year has passed since last update.


問題

フォームで画像を投稿できる機能を作って、

画像を投稿した直後は普通に表示されるけど、

一定時間が経つとなぜか画像が消えてしまう。


原因

一定時間が経つと、Heroku上のリポジトリ (Dyno) が最後のコミットの状態にリセットされるから。


対処法


①クラウドストレージ

もっとも一般的なのは、AWS Amazon S3などのクラウドストレージに画像を保存する方法。

クラウドストレージとは、プログラムを通して画像を外部のサーバ(クラウド)にアップロードし、そのURLを取得できるサービス。

比較的簡単に実装できますが、画像の量によってはお金がかかります。

Railsの場合:

https://qiita.com/hmmrjn/items/479c9e9ce82771f1b6d7


②データベースに保存

データベースに画像のバイナリデータを保存し、画像を表示するための関数などを用意する方法もあります。

こちらはお金はかかりませんが、画像のURLの扱い方などが少し複雑です。

Railsの例:

https://sha.ngri.la/index.php/Railsで画像をデータベースに登録し表示する%E3%80%82