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日

#619HTTP服务器

Download history 74/week @ 2024-03-11 29/week @ 2024-03-18 28/week @ 2024-03-25 83/week @ 2024-04-01 23/week @ 2024-04-08 31/week @ 2024-04-15 24/week @ 2024-04-22 18/week @ 2024-04-29 13/week @ 2024-05-06 32/week @ 2024-05-13 36/week @ 2024-05-20 18/week @ 2024-05-27 25/week @ 2024-06-03 24/week @ 2024-06-10 22/week @ 2024-06-17 24/week @ 2024-06-24

97 每月下载量
chimes-rust中使用

MIT许可证

43KB
799 代码行

awmp

Docs Crates.io

一个用于在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