https://github.com/tomorrow56/m5stackwifiuploader
WiFi-based file upload library for M5Stack with SD card support. Upload photos, binary data, and text files via HTTP with a web interface.
https://github.com/tomorrow56/m5stackwifiuploader
arduino embedded esp32 file-upload iot m5stack sd-card wifi
Last synced: 5 months ago
JSON representation
WiFi-based file upload library for M5Stack with SD card support. Upload photos, binary data, and text files via HTTP with a web interface.
- Host: GitHub
- URL: https://github.com/tomorrow56/m5stackwifiuploader
- Owner: tomorrow56
- License: mit
- Created: 2025-12-07T22:59:58.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2026-01-27T20:33:21.000Z (5 months ago)
- Last Synced: 2026-01-27T23:40:18.714Z (5 months ago)
- Topics: arduino, embedded, esp32, file-upload, iot, m5stack, sd-card, wifi
- Language: C++
- Size: 3.38 MB
- Stars: 4
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# M5Stack WiFi File Uploader
[](https://github.com/tomorrow56/M5StackWiFiUploader)
[](LICENSE)
[](https://www.espressif.com/en/products/socs/esp32)
**M5StackのSDカードにWiFi経由でファイルをアップロードするためのArduinoライブラリです**
このライブラリは、M5Stackデバイス上でHTTP/WebSocketサーバーを起動し、ブラウザ経由で写真、バイナリ、テキストファイルなどをSDカードに直接アップロードする機能を提供します。プログレス表示、自動再試行、エラーハンドリングなど、ファイル転送を実現するために必要な機能を備えています。
[English Version](README_EN.md)
## 主な特徴
- **デュアルプロトコル対応**: 高速なWebSocketと互換性の高いHTTPの両方をサポート
- **エラーハンドリング**: 14種類のエラーコードと自動再試行機能
- **プログレス表示**: 転送速度、残り時間、全体進捗などをリアルタイムで追跡
- **モダンWeb UI**: ドラッグ&ドロップ対応のレスポンシブなWebインターフェース
- **柔軟な設定**: ファイルサイズ、拡張子、同時アップロード数などを自由に設定可能
- **コールバック**: アップロードの各段階(開始、進捗、完了、エラー)でカスタム処理を実行可能
- **操作の制御**: アップロードの一時停止、再開、キャンセルが可能
- **ファイルダウンロード**: SDカード内のファイルをWeb UI経由でダウンロード可能
- **ファイル一覧表示**: ファイル名、サイズ、更新日時を表形式で表示
- **軽量設計**: ESP32の標準ライブラリを中心に構成され、外部依存を最小限に抑制
## 対応モデル
- M5Stack Core
- M5Stack Core2
- M5Stack CoreS3
## 依存ライブラリ
- **M5Unified** 0.2.11以降
- `WiFi`, `WebServer`, `FS`, `SD` (ESP32 Arduinoライブラリに内蔵)
- `WebSocketsServer`
- `ArduinoJson`
## システム構成

## クラス構成

## インストール
1. リリースページから最新版の `M5StackWiFiUploader.zip` をダウンロードします。
2. Arduino IDEで `スケッチ` -> `ライブラリをインクルード` -> `.ZIP形式のライブラリをインストール` を選択します。
3. ダウンロードしたZIPファイルを選択してインストールします。
## 使い方
基本的な使い方は `examples/FullFeaturedDemo/FullFeaturedDemo.ino` を参照してください。
```cpp
#include
#include
#include "M5StackWiFiUploader.h"
#include "SDCardManager.h"
const char* WIFI_SSID = "your_ssid";
const char* WIFI_PASSWORD = "your_password";
M5StackWiFiUploader uploader;
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
Serial.begin(115200);
// SDカード初期化
if (!SDCardManager::initialize()) {
Serial.println("SD Card initialization failed!");
return;
}
// WiFi接続
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected!");
// WebSocketを有効化
uploader.enableWebSocket(true);
// アップローダーを開始
if (uploader.begin(80, "/uploads")) {
Serial.println("Server started successfully!");
Serial.printf("Server URL: http://%s\n", WiFi.localIP().toString().c_str());
}
// コールバック設定
uploader.onUploadComplete([](const char* filename, uint32_t size, bool success) {
if (success) {
Serial.printf("Upload complete: %s\n", filename);
}
});
}
void loop() {
M5.update();
uploader.handleClient();
}
```
## ファイルダウンロード機能
### 主な機能
- **ファイル一覧表示**: SDカード内のファイルを表形式で表示
- **詳細情報表示**: ファイル名、サイズ、更新日時を確認
- **ダウンロード**: ファイルをローカルにダウンロード
- **削除**: 不要なファイルを削除
- **更新**: ファイル一覧を手動で更新
### Web UI
Web UIでは、以下の情報が表示されます:
| 項目 | 説明 |
|------|------|
| ファイル名 | クリックでダウンロード |
| サイズ | 人間が読みやすい形式(KB, MB) |
| 更新日時 | YYYY-MM-DD HH:MM形式 |
| 操作 | ダウンロード・削除ボタン |
### API エンドポイント
| エンドポイント | メソッド | 説明 |
|---------------|---------|------|
| `/api/files/list` | GET | 詳細なファイル一覧取得 |
| `/api/download` | GET | ファイルダウンロード |
#### `/api/files/list` レスポンス例
```json
{
"files": [
{
"name": "photo.jpg",
"size": 1024000,
"modified": 1702123456,
"isDirectory": false,
"extension": "jpg"
}
],
"total": 1
}
```
#### `/api/download` パラメータ
- `filename`: ダウンロードするファイル名
例: `/api/download?filename=photo.jpg`
### セキュリティ
- パストラバーサル攻撃を防止(`..`, `/`, `\`を含むファイル名を拒否)
- ファイル存在チェック
- Content-Dispositionヘッダーによる適切なファイル名設定
## 関連ドキュメント
- **[APIリファレンス](docs/API_REFERENCE_v1.3.md)**
- **[FAQ](docs/TROUBLESHOOTING.md)**
- **[Exampleの説明](examples/README.md)**
## 貢献
バグ報告や機能提案は [GitHub Issues](https://github.com/tomorrow56/M5StackWiFiUploader/issues) までお願いします。
## ライセンス
このライブラリは **MITライセンス** の下で公開されています。詳細は `LICENSE` ファイルを参照してください。