Qiita Conference 2025

tenntenn (@tenntenn)

好奇心を原動力に行動するソフトウェアエンジニアになるために

0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

画像アップローダーをReactとFlaskで作る

Last updated at Posted at 2020-12-21

ポイント

画像自体は外部ストレージで管理して、DBでは画像URLを管理。

ローカル開発の全体像

スクリーンショット 2021-01-03 21.26.11.png

学び

back_endとfront_endのgit管理は分ける

まともにアプリを一から作ってデプロイしたことがなかったので、今回初めて分かったのですが、herokuの場合はroot直下にherokuを動かすためのファイルをいろいろ作る必要があって、そこの階層をスタートにすると読み込むpathがローカルの時と変わってきて、、みたいな感じでごちゃごちゃになりました。なので予めgit管理を分けておけばこのような自体は未然に防げたと思います。

herokuはファイルシステムを扱えない

これに今回一番苦戦したんじゃないかなと思うのですが、herokuで例えば”コマンドを実行してsample.txtファイルを作る”ということは全くできなくなっています。
今回私の場合は

  1. 画像を一旦uploadsディレクトリ配下に画像ファイルとして保存して後で読み込む
  2. migrationsディレクトリをherokuコンソール上でmigrateする(migrate用のファイルが作られます)

この二つで詰まりました。どちらもheroku上でgit管理外のファイルを新しく生成しようとしており、herokuの仕様上ダメでした。対処法は以下の通りです。

1.PILのImageを利用


# bytes形式で読み込み
img = Image.open(file) #FileStorageクラスがなかなか厄介
# メモリでデータを保持する
bio = io.BytesIO()
img.save(bio, format=image_format)

blob.upload_from_string(data=bio.getvalue(), content_type=content_type)

2.ローカルでmigrateまで済ませた後にpushしてheroku上でupgradeのみ実行する

隠しjsonファイルをheroku上で読み込むには環境変数に無理やり入れる

firebaseの認証にjsonファイルを読み込む必要がありました。

cred = credentials.Certificate('./serviceAccountKey.json')

ただ、これは大事な情報でgitで管理はできないため、heroku上にはないことになってしまい、jsonファイルがないよというエラーが発生しました。解決策としては中身のjsonを無理やり環境変数に入れることで対応しました。

export SERVICE_ACCOUNT_KEY='{"type": "service_account","project_id": "...
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?