#web3 #ipfs #文件上传 #文件加密 #Filecoin #目录 #web3storage

w3s

Rust库,可轻松上传文件或目录到Web3.Storage,可选加密和压缩

12个版本

0.2.10 2022年9月12日
0.2.9 2022年9月8日
0.1.0 2022年7月17日

#2637 in 魔法豆

每月 24 次下载
trustblock-cli 中使用

MIT/Apache

89KB
2K SLoC

w3s crate w3s doc

w3s

一个Rust库,可轻松上传文件或目录到Web3.Storage,可选加密和压缩。

用法

将以下行添加到您的Cargo.toml文件中

w3s = { version = "0.2", features = ["all"] }

示例

上传单个文件

 let cid_result = w3s::helper::upload(
    path,  // the file path 
    auth_token,  // the api token created in web3.storage
    2,  // max concurrent upload threads
    Some(Arc::new(Mutex::new(|name, part, pos, total| {  // the progress listener
        println!("name: {name} part:{part} {pos}/{total}");
    }))),
    Some(None),  // if packed in CAR with custom block size, `Some(None)` means packed in CAR with default 256K block size
    Some(&mut b"abcd1234".to_owned()),  // if use encryption with password
    Some(None),  // if use compression with zstd level, `Some(None)` means uses compression with zstd level at 10
)
.await?;

上传目录

let cid_result = w3s::helper::upload_dir(
    path,  // the folder path
    None,  // file filter which can bypass specific files
    auth_token,  // the api token created in web3.storage
    2,  // max concurrent upload threads
    Some(Arc::new(Mutex::new(|name, part, pos, total| {  // the progress listener
        println!("name: {name} part:{part} {pos}/{total}");
    }))),
    None,  // if use encryption with password
    None,  // if use compression with zstd level
)
.await?;

从IPFS网关下载压缩和加密的文件

w3s::helper::download(
    url,  // the whole url pointing to the file under the IPFS geteway
    name,  // just a label that will later be passed to the progress listener
    &mut file,  // file to written
    Some(Arc::new(Mutex::new(|name, _, pos, total| {  // the progress listener
        println!("name: {name} {pos}/{total}");
    }))),
    None,  // start offset which should be `None` for compressed or encrypted file
    Some(b"abcd1234".to_vec()),  // use decryption with password
    true,  // use decompression
)
.await?;

使用说明

请查看 examples/ 文件夹以获取不同的用法示例。

待办事项

  • 可组合链写入器
  • 网关可用性检查器
  • 通过 api.web3.storage/upload 单个文件上传
  • 通过 api.web3.storage/car 单个CAR上传
  • 单个文件/CAR并发上传
  • 单个文件/CAR上传带压缩
  • 单个文件/CAR上传带加密
  • 自动分割大于100MB的单个文件上传
  • 从单个文件生成CAR
  • 单个文件/car下载
  • 单个文件/car下载带解压缩和解密
  • 通过CAR写入器上传目录
  • 带压缩和加密的目录上传
  • 代码注释
  • 文档

链写入器

该w3s库包含几个用于上传任务的写入器。您可以根据需要添加写入器。

例如,如果您想在上传之前压缩和加密数据

Get the file -> compression writer -> encryption writer -> split writer -> upload writer

如果您想上传CAR文件

Get the file -> CAR writer -> upload writer

如果您希望在CAR之前加密文件并上传

Get the file -> encryption writer -> CAR writer -> upload writer

依赖项

~11-27MB
~411K SLoC