問題
フォームで画像を投稿できる機能を作って、
画像を投稿した直後は普通に表示されるけど、
一定時間が経つとなぜか画像が消えてしまう。
原因
一定時間が経つと、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