Skip to main content

parse_multipart

Function parse_multipart 

Source
pub async fn parse_multipart(
    multipart: &mut Multipart,
) -> Result<MultipartResult, UploadError>
Expand description

解析 multipart/form-data 请求 — 对齐 PHP Request::file() + $_FILES

PHP 行为:

  • $_FILES 自动填充上传文件信息(name/type/tmp_name/error/size)
  • Request::file($name) 包装为 UploadedFile 对象
  • $_POST 填充普通字段

Rust 端:使用 axum::extract::Multipart 提取字段, 文件字段保存到临时文件并创建 UploadedFile,普通字段保存到 fields

§用法

use sz_rust_core::upload::parse_multipart;
use axum::extract::Multipart;

async fn upload_handler(mut multipart: Multipart) -> Result<String, String> {
    let result = parse_multipart(&mut multipart).await
        .map_err(|e| e.to_string())?;
     
    if let Some(uploaded) = result.file("avatar") {
        let moved = uploaded.move_to("/var/www/uploads", Some("avatar.png"))
            .map_err(|e| e.to_string())?;
        return Ok(format!("上传成功:{:?}", moved.path()));
    }
     
    Ok("未找到文件".to_string())
}