我需要使用form-data将一个图像数组发送到一个API,所以我使用了一个循环来添加图像,但是我得到了一个错误。
fn main() {
let json = r#"{
"imgupload": ["/home/user/Pictures/image01.jpg", "/home/user/Pictures/image02.jpg"]
}"#
.to_string();
let request = serde_json::from_str::<ProductRequest>(json.as_str()).unwrap();
let mut form = reqwest::blocking::multipart::Form::new();
let array = request.imgupload.unwrap();
for file_path in array.iter() {
let file_name = get_file_name(file_path);
let part = get_request_part_from_file(&file_path, &file_name);
form.part("imgupload[]", part);
}
}
fn get_file_name(x: &String) -> String {
let file_name = std::path::Path::new(x)
.file_name()
.unwrap()
.to_str()
.unwrap()
.to_string();
file_name
}
fn get_request_part_from_file(
file_path: &String,
file_name: &String,
) -> reqwest::blocking::multipart::Part {
println!("{}", file_path);
let part = reqwest::blocking::multipart::Part::file(file_path)
.unwrap()
.file_name(file_name.to_string());
part
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ProductRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub imgupload: Option<Vec<String>>,
}
字符串
但是当我尝试添加reqwest::blocking::multipart::Part时,我在form.part(“imgupload[]",part);中得到以下错误
enter image description here
解决这个问题的正确方法是什么?
1条答案
按热度按时间bfhwhh0e1#
reqwest::blocking::multipart::Form
上的part
方法获取self
的所有权,并返回一个新的Form
,其中添加了部分。由于它拥有
self
的所有权,因此在调用.part
之后,不能重用form
变量。要修复代码,您可以将
form
重新分配给新的Form
,然后.part
返回:字符串