Connessione FTP in Rust
Per la connessione ad un server FTP in Rust abbiamo varie scelte; ma la libreria che vedremo oggi è di sicuro la più usata: rust-ftp!
Può supportare anche FTPS, ma a me ha dato problemi, quindi non l'ho ancora testata.
Aggiungete questa dipendenza al Cargo.toml:
[dependencies]
ftp = { version = "3.0.1" }
Qui sotto un esempio di codice in cui facciamo queste operazioni:
- ci connettiamo
- stampiamo dove siamo
- ci spostiamo e di nuovo stampiamo dove siamo
- listiamo tutti i files della directory corrente
- visualiziamo il contenuto di un file
extern crate ftp;
use std::str;
use std::io::Cursor;
use ftp::FtpStream;
fn main() {
let mut ftp_stream = FtpStream::connect("ftp.server.it:21").unwrap();
let _ = ftp_stream.login("USERNAME", "PWD").unwrap();
println!("Ti trovi in: {}", ftp_stream.pwd().unwrap());
let _ = ftp_stream.cwd("/DIRECTORY").unwrap();
println!("Adesso ti trovi in: {}", ftp_stream.pwd().unwrap());
for file in ftp_stream.list(None).unwrap() {
println!("{}", file);
}
let remote_file = ftp_stream.simple_retr("file.txt").unwrap();
println!("{}", str::from_utf8(&remote_file.into_inner()).unwrap());
let _ = ftp_stream.quit();
}
Vi lascio come "compito" quello di eseguire un upload di un file.
Enjoy!
rust ftp rust-ftp cargo
Commentami!