GithubHelp home page GithubHelp logo

sebastianbergner / simpleftpserver Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xreef/simpleftpserver

0.0 0.0 0.0 164 KB

A simple FTP server for Arduino, ArduinoSAMD WiFiNINA, esp8266, esp32, stm32 and Raspberry Pi Pico W

License: Other

C++ 95.14% C 4.86%

simpleftpserver's Introduction

SimpleFTPServer

Instruction on FTP server on esp8266 and esp32 Simple FTP Server library now with support for Wio Terminal and SD

Simple FTP Server for

  • Raspberry Pi Pico W (Flash: LittleFS) (To test SD and SdFat)
  • esp8266 (Flash: SPIFFs, LittleFS. SD: SD, SdFat 2)
  • esp32 (SPIFFS, LITTLEFS, FFAT, SD: SD, SdFat)
  • stm32 (SdFat, SPI flash)
  • Arduino (SD with 8.3 file format, SD: SD, SdFat 2)
  • Wio Terminal (SdFat 2, Seed SD, and native FAT)

Changelog

  • 2022-09-21 2.1.4 Add support for Raspberry Pi Pico W and rp2040 boards, Fix SD card config
  • 2022-09-20 2.1.3 Soft AP IP management, more disconnect event and SD_MCC
  • 2022-05-21 2.1.2 Fix SD path (#19)
  • 2022-05-21 2.1.1 Minor fix
  • 2022-03-30 2.1.0 Add UTF8 support and enabled It by default (Thanks to @plaber)
  • 2022-03-30 2.0.0 Complete support for STM32 with SD and SPI Flash minor bux fix and HELP command support
  • 2022-03-17 1.3.0 Fix enc28j60 and w5500 support and restructuring for local settings
  • 2022-02-25 1.2.1 Fix anonymous user begin and fix SPIFFS wrong display
  • 2022-02-22 1.2.0 Add anonymous user and implement correct RFC (#9 now work correctly with File Explorer)
  • 2022-02-01 1.1.1 Add workaround to start FTP server before connection, add end and setLocalIP method.

When I develop a new solution I'd like to divide the application in layer, and so I'd like focus my attention in only one aspect at time.

In detail I separate the REST layer (written inside the microcontroller) and the Front-End (written in Angular, React/Redux or vanilla JS), so I'd like to upload new web interface directly to the microcontroller via FTP.

For static information (Web pages for examples), that not change frequently, esp8266 or esp32 have internal SPIFFS (SPI Flash File System) and you can upload data via Arduino IDE as explained in the article "WeMos D1 mini (esp8266), integrated SPIFFS Filesystem" for esp8266 or "ESP32: integrated SPIFFS FileSystem" for esp32 or with LittleFS "WeMos D1 mini (esp8266), integrated LittleFS Filesystem" but for fast operation and future support It's usefully use FTP.

/*
 * FtpServer esp8266 and esp32 with SPIFFS
 *
 * AUTHOR:  Renzo Mischianti
 *
 * https://www.mischianti.org/2020/02/08/ftp-server-on-esp8266-and-esp32
 *
 */

#ifdef ESP8266
#include <ESP8266WiFi.h>
#elif defined ESP32
#include <WiFi.h>
#include "SPIFFS.h"
#endif

#include <SimpleFTPServer.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";


FtpServer ftpSrv;   //set #define FTP_DEBUG in ESP8266FtpServer.h to see ftp verbose on serial


void setup(void){
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());


  /////FTP Setup, ensure SPIFFS is started before ftp;  /////////
  
  /////FTP Setup, ensure SPIFFS is started before ftp;  /////////
#ifdef ESP32       //esp32 we send true to format spiffs if cannot mount
  if (SPIFFS.begin(true)) {
#elif defined ESP8266
  if (SPIFFS.begin()) {
#endif
      Serial.println("SPIFFS opened!");
      ftpSrv.begin("esp8266","esp8266");    //username, password for ftp.  set ports in ESP8266FtpServer.h  (default 21, 50009 for PASV)
  }    
}
void loop(void){
  ftpSrv.handleFTP();        //make sure in loop you call handleFTP()!!  
 // server.handleClient();   //example if running a webserver you still need to call .handleClient();
 
}

https://downloads.arduino.cc/libraries/logs/github.com/xreef/SimpleFTPServer/

simpleftpserver's People

Contributors

xreef avatar larswust avatar sebastianbergner avatar cat-in-136 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.