伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

【每周一库】 rust-ftp - an FTP client written in Rust

来源:本站原创 浏览:160次 时间:2021-07-22
本期的每周一库带来的是Rust下的ftp client库:rust-ftp

相关链接

  • rust-ftp docs: https://docs.rs/ftp/3.0.1/ftp/
  • rust-ftp github: https://github.com/mattnenterprise/rust-ftp

rust-ftp的文档页面给出了使用的用例,从代码来看非常简单,下面我们通过实际使用来体验rust-ftp库。开发环境

  • Windows 10
  • rustc --version: rustc 1.46.0-nightly (6bb3dbfc6 2020-06-22)
  • cargo --version: cargo 1.46.0-nightly (089cbb80b 2020-06-15)
  • rust-ftp version: 3.0.1
通过FileZilla Server来体验rust-ftp的功能

首先我们下载FileZilla Server作为本地的ftp服务器程序

这里简单赘述一下FileZilla Server的配置,启动FileZilla Server之后

配置FileZilla Server的User

在下图右侧窗口添加一个User,用户名设置为admin,密码设置为admin

配置FileZilla Server的共享文件夹

配置完User之后,我们需要告诉FileZilla Server共享的目录在哪里,本例中我们使用了目录D:\Temp\ftpShare目录,配置完成之后如下图,需要注意添加刚才创建的admin用户

使用rust-ftp和FileZilla Server搭建的本地ftp服务器进行文件读取和上传

经过上面的FileZilla Server的配置,我们在本地已经有了一个运行的ftp服务器,服务器的跟目录在本例中为D:\Temp\ftpShare目录我们创建一个新的rust工程

cargo new hello-rustftp

在工程的Cargo.toml文件中添加引用

[dependencies]
ftp = { version="3.0.1"}

修改src/main.rs文件内容如下

extern crate ftp;

use std::str;
use std::io::Cursor;
use ftp::FtpStream;

fn main() {
   println!("Hello rust-ftp!");
   // Create a connection to an FTP server and authenticate to it.
   let mut ftp_stream = FtpStream::connect("127.0.0.1:21").unwrap();
   let _ = ftp_stream.login("admin", "admin").unwrap();

   // Get the current directory that the client will be reading from and writing to.
   println!("Current directory: {}", ftp_stream.pwd().unwrap());
   
   // Change into a new directory, relative to the one we are currently in.
   let _ = ftp_stream.cwd("test_data").unwrap();

   // Retrieve (GET) a file from the FTP server in the current working directory.
   let remote_file = ftp_stream.simple_retr("rust.txt").unwrap();
   println!("Read file with contents\n{}\n", str::from_utf8(&remote_file.into_inner()).unwrap());

   // Store (PUT) a file from the client to the current working directory of the server.
   let mut reader = Cursor::new("Hello from the Rust \"ftp\" crate!".as_bytes());
   let _ = ftp_stream.put("hello-rustftp.txt", &mut reader);
   println!("Successfully upload hello-rustftp.txt");

   // Terminate the connection to the server.
   let _ = ftp_stream.quit();
}

上面的代码做了三件事

  • 使用用户名admin,密码admin(刚才在FileZella Server中配置的User身份)连接本地ftp服务器
  • 切换到本地ftp服务器目录的test_data目录读取其中名为rust.txt文件内容
  • 向ftp服务器目录的test_data目录写入一个名为hello-rustftp.txt文件,文件内容为Hello from the Rust "ftp" crate!

既然我们的rust程序要在ftp服务器跳转到目录test_data并读取其中的rust.txt文件,那么我们首先要在我们的ftp服务器中创建名为test_data的目录和rust.txt文件其中我们向文件rust.txt文件中写入内容

ftp服务器根目录(本例中为:D:\Temp\ftpShare文件夹)的目录结构为:

到这里我们就配置完了本地ftp服务器的目录结构,我们可以运行我们的rust程序进行测试
使用命令cargo build编译工程,使用命令cargo run运行

同时我们的ftp服务器本地目��ͥ,����录D:\Temp\ftpShare\test_data\中会出现我们新上传的hello-rustftp.txt文件

到这里我们完成了rust-ftp库的简单使用。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net