Skip to content

h-nari/FsHandler

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
img
 
 
src
 
 
 
 
 
 
 
 

FsHandler

arduino library to access spiffs/sd via ESP8266WebServer

概要

  • ESP8266WebServer用ファイルシステム参照・変更Handler
  • SpiffsHandler: SPIFFSファイル・システム用
  • SdHandler SDメモリ・ファイル・システム用
  • ファイル一覧・参照・アップロード・削除機能
  • WebServerの開発がより便利に?
  • プログラム開発時に特に便利

画面サンプル

screenshot

使い方

SpiffsHandler或いはSdHandler型のインスタンスを宣言し、 ESP8266WebServerのaddHandlerメソッドでセットします。

具体的には FsHandler/examples/fs_demo をご参照下さい。

ヘッダーファイル

以下のようにヘッダーファイルをインクルードして下さい。

#define FS_NO_GLOBALS
#include <FS.h>
#include <SD.h>
#include "FsHandler.h"
#include "SpiffsHandler.h"
#include "sdHandler.h"

#define FS_NO_GLOBALS はFS.hとSD.hファイルにあるFileクラスの衝突を回避するのに必要です。

インスタンスの宣言

SpiffsHandlerクラスのコンストラクタは以下のように宣言されています。

uriはWebServer上でSPIFFSが参照されるパス。 uploadableはアップロード機能の有無、 deletableはファイル削除機能の有無を指定します。

SpiffsHandler(const char *uri,bool uplodable=false,bool deletable=false);

SdHandlerのコンストラクタの宣言を下に示します。

SdHandler(const char *uri,const char *path,
         bool uplodable=false,bool deletable=false);

uriは同じくWebServer上でSDメモリが参照されるパス。 pathは、Webに公開されるトップとなるSDメモリー上のディレクトリ。uploadableとdeletableはSpiffsHandlerと同じです。

サンプルプログラムでは、以下のように インスタンスを宣言しています。

SpiffsHandler fsHandler("rom",true,true);
SdHandler sdHandler("sd", "/", true, true);

初期化

SdHandlerの場合、自分でSD.bigin()し、成功したら sdHandler.enable()を呼び出す必要があります。 Webからアクセスされた際、指定されたファイルが 存在しないのか、SDカードが、そもそも読めないのかを 識別するためです。

最後に、addHandler()し、server.begin()でWebServerを 起動します。

server.addHandler(&fsHandler);
server.addHandler(&sdHandler);
server.begin();

カスタマイズ

setStyleSheet(), setScript()で、 組み込まれるスタイルシート、 スクリプトファイルを指定できます。

void setStyleSheet(const char *url) { m_urlStyleSheet = url;}
void setScript(const char *url) { m_urlScript = url;}

今後の課題

ディレクトリのファイル一覧を出力する際 出力するHTMLを一旦Stringに蓄えて出力するため、 ファイル数が多いディレクトリー等の場合 大量のメモリを消費することになります。 この問題は、将来、解決したいと思います。

About

arduino library to access spiffs/sd via webServer

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages