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())
}