#rocket-web #upload #rocket #multipart #multipart-form #web #form-data

nightly bin+lib rocket_upload

在 Rust Rocket 网络框架中处理 MultiPart 表单数据,轻松将文件上传到服务器

1 个不稳定版本

0.1.0 2019年12月4日

#15#form-data

MIT 许可证

13KB
169

在 Rust Rocket 网络框架中处理 MultiPart 表单数据,轻松将文件上传到服务器。

所有代码都在 lib.rs 中。main.rs 是一个很好的例子,展示了它的工作方式。

首先

use rocket_upload::MultipartDatas;

然后在你的处理器中

#[post("/upload/<userid>", data = "<data>")]
fn upload(userid: String, content_type: &ContentType, data: MultipartDatas) -> Html<String>
{
  // to get a param from client
  let mut result=format!("UserID:{}<br>",userid);
  // content_type not used here, just for more informations
  result = format!("{}{:?}<br>",result,content_type);
  // aquire all Form field data
  for t in data.texts {
    result = format!("{}FieldName:{} --- FieldValue:{}<br>",result,t.key,t.value);
  }
  // aquire all files upload 
  for f in data.files {
    result = format!("{}FieldName:{} --- FileName:{} --- StoragePath:{}<br>",
      result,f.name,f.filename,f.path);
    f.persist(Path::new("upload"));
  }
  Html(format!("<html><head></head><body>upload coming...<br>{}</body></html>",result))
}

该项目参考了 Magic Len 的 https://crates.io/crates/rocket-multipart-form-data 代码

依赖关系

~15–27MB
~430K SLoC