fastdfs 0.1.0-alpha.2

Rust client for FastDFS distributed file system
Documentation

FastDFS Rust SDK

  • support FastDFS V5.04 ~ V6.15.4, or later.

  • support IPv4 / IPv6 (since FastDFS V6.11)

github gitee crate documentation minimum rustc 1.71 License

Install

# Cargo.toml
fastdfs = "0.1"

tokio = { version = "1", features = ["full"] }

Usage

快速入门

use fastdfs::types::Metadata;
use fastdfs::{ClientOptions, FdfsClient, FileId, Result};

#[tokio::main]
async fn main() -> Result<()> {
    // configure your client
    let client = ClientOptions::new(vec!["127.0.0.1:22122"]).build()?;
    let data = br#"
# hello
> This is a text file, from buffer.
okay :-) .
"#;

    let mut metadata = Metadata::new();
    metadata.insert("filename".to_string(), "test.md".to_string());
    // upload your file from buffer
    let file_id = client
        .upload_file_buf(data, "md", Some(&metadata), false)
        .await?;
    println!("file_id: {:?}", file_id);

    // file exists
    let file_exists = client.file_exists(&file_id).await?;
    println!("file_exists: {}", file_exists);
    assert_eq!(file_exists, true, "file not exists");

    // query file metadata
    let file_metadata = client.get_metadata(&file_id).await?;
    println!("file_metadata: {:?}", file_metadata);

    // download your file to buffer
    let data_buf = client.download_file_buf(&file_id, 0, 0).await?;
    println!("data_buf: {:?}", data_buf);
    assert_eq!(data_buf.as_ref(), data.as_ref(), "file data inconsistent");

    // delete your file
    client.delete_file(&file_id).await?;

    // The deleted file is no longer there
    let file_exists = client.file_exists(&file_id).await?;
    println!("file_exists: {}", file_exists);
    assert_eq!(file_exists, false, "file delete error");

    Ok(())
}