summaryrefslogtreecommitdiffstats
path: root/examples/FTPServerSample/LittleFSSample/LittleFSSample.ino
diff options
context:
space:
mode:
Diffstat (limited to 'examples/FTPServerSample/LittleFSSample/LittleFSSample.ino')
-rw-r--r--examples/FTPServerSample/LittleFSSample/LittleFSSample.ino124
1 files changed, 124 insertions, 0 deletions
diff --git a/examples/FTPServerSample/LittleFSSample/LittleFSSample.ino b/examples/FTPServerSample/LittleFSSample/LittleFSSample.ino
new file mode 100644
index 0000000..197c730
--- /dev/null
+++ b/examples/FTPServerSample/LittleFSSample/LittleFSSample.ino
@@ -0,0 +1,124 @@
+/*
+ This is an example sketch to show the use of the espFTP server.
+
+ Please replace
+ YOUR_SSID and YOUR_PASS
+ with your WiFi's values and compile.
+
+ If you want to see debugging output of the FTP server, please
+ select select an Serial Port in the Arduino IDE menu Tools->Debug Port
+
+ Send L via Serial Monitor, to display the contents of the FS
+ Send F via Serial Monitor, to fromat the FS
+
+ This example is provided as Public Domain
+ Daniel Plasa <dplasa@gmail.com>
+
+*/
+#ifdef ESP8266
+#include <ESP8266WiFi.h>
+#elif defined ESP32
+#include <WiFi.h>
+#endif
+
+#include <LittleFS.h>
+#include <FTPServer.h>
+
+const char *ssid PROGMEM = "YOUR_SSID";
+const char *password PROGMEM = "YOUR_PASS";
+
+// tell the FtpServer to use LittleFS
+FTPServer ftpSrv(LittleFS);
+
+void setup(void)
+{
+ Serial.begin(74880);
+ WiFi.begin(ssid, password);
+
+ bool fsok = LittleFS.begin();
+ Serial.printf_P(PSTR("FS init: %S\n"), fsok ? PSTR("ok") : PSTR("fail!"));
+
+ // Wait for connection
+ while (WiFi.status() != WL_CONNECTED)
+ {
+ delay(500);
+ Serial.printf_P(PSTR("."));
+ }
+ Serial.printf_P(PSTR("\nConnected to %S, IP address is %s\n"), ssid, WiFi.localIP().toString().c_str());
+
+ // setup the ftp server with username and password
+ // ports are defined in esFTP.h, default is
+ // 21 for the control connection
+ // 50009 for the data connection (passive mode by default)
+ ftpSrv.begin(F("ftp"), F("ftp")); //username, password for ftp. set ports in ESP8266FtpServer.h (default 21, 50009 for PASV)
+}
+
+enum consoleaction
+{
+ show,
+ wait,
+ format,
+ list
+};
+consoleaction action = show;
+
+void loop(void)
+{
+ // this is all you need
+ // make sure to call handleFTP() frequently
+ ftpSrv.handleFTP();
+
+ //
+ // Code below just to debug in Serial Monitor
+ //
+ if (action == show)
+ {
+ Serial.printf_P(PSTR("Enter 'F' to format, 'L' to list the contents of the FS\n"));
+ action = wait;
+ }
+ else if (action == wait)
+ {
+ if (Serial.available())
+ {
+ char c = Serial.read();
+ if (c == 'F')
+ action = format;
+ else if (c == 'L')
+ action = list;
+ else if (!(c == '\n' || c == '\r'))
+ action = show;
+ }
+ }
+ else if (action == format)
+ {
+ uint32_t startTime = millis();
+ LittleFS.format();
+ Serial.printf_P(PSTR("FS format done, took %lu ms!\n"), millis() - startTime);
+ action = show;
+ }
+ else if (action == list)
+ {
+ Serial.printf_P(PSTR("Listing contents...\n"));
+ uint16_t fileCount = listDir("", "/");
+ Serial.printf_P(PSTR("%d files/dirs total\n"), fileCount);
+ action = show;
+ }
+}
+
+uint16_t listDir(String indent, String path)
+{
+ uint16_t dirCount = 0;
+ Dir dir = LittleFS.openDir(path);
+ while (dir.next())
+ {
+ ++dirCount;
+ if (dir.isDirectory())
+ {
+ Serial.printf_P(PSTR("%s%s [Dir]\n"), indent.c_str(), dir.fileName().c_str());
+ dirCount += listDir(indent + " ", path + dir.fileName() + "/");
+ }
+ else
+ Serial.printf_P(PSTR("%s%-16s (%ld Bytes)\n"), indent.c_str(), dir.fileName().c_str(), (uint32_t)dir.fileSize());
+ }
+ return dirCount;
+}