【Streamlit】ファイルアップロード容量制限を変更する

Streamlit
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Streamlitでアプリを開発していると、ファイルをアップロードする場面が多くあります。しかし、st.file_uploader を使ってファイルをアップロードする際には、デフォルトで1ファイル200MBまでの制限があるため、大きなファイルを扱う場合に問題になることがあります。

この記事では、このアップロード容量制限を解除(変更)する方法について、ローカル環境とStreamlit Cloudでの設定方法の両方を、具体的なコード例とともに解説します。

✅ ファイルアップロードの制限について

Streamlitの公式ドキュメントによると、次のように記載されています:

By default, uploaded files are limited to 200 MB each. You can configure this using the server.maxUploadSize config option.
(デフォルトでは、アップロードされる各ファイルのサイズは200MBに制限されています。この制限は server.maxUploadSize 設定で変更できます。)

🔧 アップロード制限を変更する方法(ローカル環境)

手順1:設定ファイル config.toml を作成・編集

まず、Streamlitの設定ファイルを編集します。通常は以下の場所に作成します:

  • macOS / Linux: ~/.streamlit/config.toml
  • Windows: %userprofile%\.streamlit\config.toml

内容は以下のように記述します:

TOML
# ~/.streamlit/config.toml
[server]
maxUploadSize = 1024 # 単位はMB(この例では1GB)

これで、アップロード可能なファイルサイズの上限が1024MB(1GB)になります。

💡 設定ファイルが存在しない場合は、自分で .streamlit/config.toml を新しく作成してください。

手順2:Streamlitアプリを再起動

設定変更を反映させるには、アプリを再起動します。

Bash
streamlit run your_app.py

🧪 動作確認のためのサンプルコード

Python
import streamlit as st

st.title("ファイルアップロードテスト")
uploaded_file = st.file_uploader("ファイルをアップロードしてください", type=["csv", "xlsx", "zip", "mp4"])

if uploaded_file is not None:
    st.write("ファイル名:", uploaded_file.name)
    st.write("ファイルサイズ(バイト):", len(uploaded_file.getbuffer()))

☁ Streamlit Cloudで容量制限を変更する方法

ローカルとは異なり、Streamlit Cloudでは ~/.streamlit/config.toml は無効です。その代わりに、アプリのルートフォルダに .streamlit/config.toml を含めてGitHubにアップロードする必要があります。

手順1:プロジェクト構成に .streamlit/config.toml を追加

プロジェクト構成例:

Plaintext
your_project/
├── app.py
└── .streamlit/
    └── config.toml

config.toml の内容:

TOML
[server]
maxUploadSize = 1024

.streamlit フォルダ名の先頭にドット (.) をつけることを忘れずに!

手順2:GitHubにプッシュ

Bash
git add .streamlit/config.toml
git commit -m "Add config.toml to increase upload size"
git push origin main

手順3:Streamlit Cloudで再デプロイ

  1. Streamlit Cloud にアクセス
  2. アプリを選択
  3. 「⚙設定」→「Rerun(再デプロイ)」を実行

これでアップロード容量の上限が変更されます。

Streamlit Cloudでの参考事例

ファイルアップローダーの容量を変更した事例として、ADIFファイルをアップロードしてグラフを表示させるツールを紹介します。

https://adif-graph-viewer.streamlit.app
GitHub - JS2IIU-MH/adit-graph-viewer: ADIF Graph Viewer is a web app that visualizes amateur radio QSO logs. Upload your ADIF file to see monthly activity graphs, QSO statistics, and band/mode usage. Built with Streamlit, it provides real-time processing and downloadable charts.
ADIF Graph Viewer is a web app that visualizes amateur radio QSO logs. Upload your ADIF file to see monthly activity graphs, QSO statistics, and band/...

🔍 補足:現在の設定を確認する方法

アプリ内で現在の設定値を確認したい場合は、次のコードを使います:

Python
import streamlit as st

st.write("現在のアップロード制限(MB):",
         st.runtime.get_current().config.get_option("server.maxUploadSize"))

⚠ 注意点

  • アップロード可能なサイズ = ブラウザ制限 + メモリ制限 + ネットワーク制限 に依存します。
  • 極端に大きなファイル(数GB以上)は、アップロード中にブラウザやサーバーがタイムアウトすることがあります。
  • Streamlit Cloud では無料プランにメモリ使用量上限(例:1GB)があるため、実際にアップロードできるファイルサイズは制限される場合があります。

✅ まとめ

環境設定方法
ローカル~/.streamlit/config.tomlmaxUploadSize を記述
Streamlit Cloud.streamlit/config.toml をプロジェクト内に配置し、GitHub経由でデプロイ

📚 参考リンク

当ブログのStreamlit関連記事一覧です。こちらも参考にしていただけますと幸いです。ぜひご覧ください。

Streamlit
PythonのWEBフレームワークであるStreamlitについての記事を集めたページです。

Streamlitでは簡単にファイルアップロード機能が実装できますが、容量制限の設定を正しく行うことで、より大きなデータを扱える柔軟なアプリにすることが可能です。ぜひ、アプリの用途に応じて設定を見直してみてください!

最後まで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました