2个版本
0.1.5 | 2022年8月18日 |
---|---|
0.1.4 | 2022年7月4日 |
33 在 #multipart-form 中排名
每月下载量:35
在 actix-multipart-extract 中使用
6KB
81 行
actix-multipart-extract
这是一个Rust库,为actix 4提供适当的multipart支持。
它可以解析multipart请求到结构体中,并验证请求属性。它使用serde进行反序列化,并使用了MultipartForm
派生。
安装
将actix_multipart_extract
添加到您的Cargo.toml文件中
[dependencies]
actix-multipart-extract = "0.5"
示例
use actix_multipart_extract::{File, Multipart, MultipartForm};
use actix_web::{post, App, HttpResponse, HttpServer, Responder};
use serde::Deserialize;
// File, String, bool, and number types are the only supported types for forms.
// Vec and Option may also be used with one of the 4 types as the type param.
// Some serde attributes will work with forms.
#[derive(Deserialize, MultipartForm, Debug)]
pub struct ExampleForm {
#[multipart(max_size = 5MB)]
file_field: File,
string_field: Vec<String>, // list field
bool_field: Option<bool>, // optional field
}
#[post("/example")]
async fn example(example_form: Multipart<ExampleForm>) -> impl Responder {
// File field
println!("File size: {}", example_form.file_field.bytes.len());
println!(
"File content type: {}",
example_form.file_field.content_type
);
println!("File name: {}", example_form.file_field.name);
// List of strings field
println!("List of strings: {:?}", example_form.string_field);
// Optional bool field
match example_form.bool_field {
Some(v) => println!("Has bool field: {}", v),
None => println!("No bool field"),
}
HttpResponse::Ok()
}
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(move || App::new().service(example))
.bind(("127.0.0.1", 8080))?
.run()
.await
}
依赖
约1.5MB
约35K SLoC