19个版本
0.8.1 | 2022年3月1日 |
---|---|
0.7.0 | 2021年10月22日 |
0.6.1 | 2021年5月17日 |
0.6.0 | 2020年9月19日 |
0.2.1 | 2018年10月12日 |
#619 在 HTTP服务器
97 每月下载量
在chimes-rust中使用
43KB
799 代码行
awmp
一个用于在actix-web
1.x, 2.x, 3.x, 或 4.x中处理multipart/form-data的便利库。
该库内部使用actix-multipart
,不是actix-multipart
的替代品。它将multipart文件数据保存到临时文件中,并收集文本数据,处理所有阻塞I/O操作。
在PartsConfig中提供了一些配置选项
- text_limit:任何大于此字节数的文本字段数据将保存为临时文件
- file_limit:任何大于此字节数的文件字段数据将被丢弃/忽略
- file_fields:将这些名称的字段视为文件字段
- text_fields:将这些名称的字段视为文本字段
- temp_dir:使用此文件夹作为tmp目录,而不是
tempfile
的默认值
用法
此crate支持actix-web
的两个主要版本,1.x, 2.x, 3.x, 和 4.x。默认支持4.x。
要与actix-web
1.x一起使用,请将以下内容添加到您的Cargo.toml
awmp = { version = "0.8", default-features = false, features = ["v1"] }
示例
use actix_web::{web, App, Error, FromRequest, HttpResponse, HttpServer};
async fn upload(mut parts: awmp::Parts) -> Result<actix_web::HttpResponse, actix_web::Error> {
let qs = parts.texts.to_query_string();
let file_parts = parts
.files
.take("file")
.pop()
.and_then(|f| f.persist("/tmp").ok())
.map(|f| format!("File uploaded to: {}", f.display()))
.unwrap_or_default();
let body = [format!("Text parts: {}", &qs), file_parts].join(", ");
Ok(actix_web::HttpResponse::Ok().body(body))
}
#[actix_rt::main]
async fn main() -> Result<(), std::io::Error> {
actix_web::HttpServer::new(move || {
actix_web::App::new()
.data(awmp::PartsConfig::default().with_file_limit(100000))
.route("/", actix_web::web::post().to(upload))
})
.bind("0.0.0.0:3000")?
.run()
.await
}
当前版本:0.8.1
许可证:MIT
依赖项
~6–21MB
~329K SLoC