ParticleFtpClient (community library)

Summary

Name Value
Name ParticleFtpClient
Version 0.0.4
Installs 16826
License MIT
Author Joon-Yee Chuah
URL https://github.com/jychuah/ParticleFtpClient
Repository https://github.com/jychuah/ParticleFtpClient.git
Download .tar.gz
All Versions 0.0.4, 0.0.3, 0.0.2, 0.0.1

A library that implements PASV FTP

Example Build Testing

Device OS Version:

This table is generated from an automated build. Success only indicates that the code compiled successfully.

Library Read Me

This content is provided by the library maintainer and has not been validated or approved.

ParticleFtpClient

A library for Particle.io platform devices to perform simple FTP commands.

Usage
ParticleFtpClient ftp;

Most methods mirror FTP commands. To log into an FTP server, you must successively call ftp.open("hostname", timeout), ftp.user("username") and ftp.pass("password"). Each should return true.

Timeouts

FTP can be a slow protocol. Therefore, the open method has a timeout parameter in integer seconds. Certain methods will timeout. I've tried to make the client as robust as possible, but occassionally things will happen "out of sequence" and you may wish to retry your ftp commands.

Passive Mode

This library implements a passive mode client only. TLDR, The server needs to support passive mode.

In passive mode, any time the server needs to send or receive extensive data, the client will automatically send a PASV command. The server responds with a new port used for the data transfer. The sender of the data (either the client when uploading or server when downloading) stops the connection when the data transfer is finished and the port is discarded.

Downloading Files

Certain methods (list, retr) requires the use of a passive connection. Therefore, ParticleFTPClient exposes a public TCPClient member data. For methods that retrieve passive data (list and retr), you may reasonably expect server sent data as long as data remaines connected. For example:

// Initiate a download
ftp.retr("download.txt");
// While the connection remains open, the server still intends to send data.
while (ftp.data.connected()) {
// Read what data is in the current packet
while (ftp.data.available()) {
// get another byte
char c = ftp.data.read();
}
}
Uploading Files

The stor method allows a file upload, using the data member. Call finish when you are done uploading. It will stop the data connection and flush any server responses. (There may be a timeout here.) For example:

// Set the file type to ASCII
ftp.type("A");
// Initiate an upload
ftp.stor("upload.txt");
for (int i = 0; i < strlen(data); i++) {
ftp.data.write(data[i]);
}
// Call finish when you are done uploading. You may expect a timeout here.
ftp.finish();
Debugging

If you want verbose serial output for server responses, uncomment #define PARTICLE_FTP_DEBUG in ParticleFtpClient.cpp

Browse Library Files