xiaokyo 发表于 2022-07-21 19:09
Tags:reqwest, tokio, upload, chunk, multipart, file
如题, 希望有人整个例子, 麻烦了 最近有个需求很需要这个
已经困扰一个星期了 查询了很多, 但是就是不知道reqwest的form怎么生成文件字段的值
十分感谢回复
-- 👇 Aya0wind: 自定义大小切块你直接发送的时候就放在多个Part里,一次post请求上传就好了,到了服务器再把所有Part拼起来,md5就直接作为单独的value一起发。multipart/form-data本来就支持同时携带文本key value对和二进制key value对的。
-- 👇 xiaokyo: 这样chunk不能按照自定义大小切块且md5吧
-- 👇 Aya0wind: ```rust #[tokio::main] async fn main() { let client = reqwest::Client::new(); let form = reqwest::multipart::Form::new().part( "file", Part::bytes(Cow::from("your content".as_bytes())).file_name("yourfile.txt"), ); let response = client .post("http://localhost:5029/api/Example") .multipart(form) .send() .await .unwrap(); println!("{:?}", response); }
reqwest需要添加multipart feature。
自定义大小切块你直接发送的时候就放在多个Part里,一次post请求上传就好了,到了服务器再把所有Part拼起来,md5就直接作为单独的value一起发。multipart/form-data本来就支持同时携带文本key value对和二进制key value对的。
这样chunk不能按照自定义大小切块且md5吧
#[tokio::main] async fn main() { let client = reqwest::Client::new(); let form = reqwest::multipart::Form::new().part( "file", Part::bytes(Cow::from("your content".as_bytes())).file_name("yourfile.txt"), ); let response = client .post("http://localhost:5029/api/Example") .multipart(form) .send() .await .unwrap(); println!("{:?}", response); }
评论区
写评论十分感谢回复
--
👇
Aya0wind: 自定义大小切块你直接发送的时候就放在多个Part里,一次post请求上传就好了,到了服务器再把所有Part拼起来,md5就直接作为单独的value一起发。multipart/form-data本来就支持同时携带文本key value对和二进制key value对的。
--
👇
xiaokyo: 这样chunk不能按照自定义大小切块且md5吧
--
👇
Aya0wind: ```rust #[tokio::main] async fn main() { let client = reqwest::Client::new(); let form = reqwest::multipart::Form::new().part( "file", Part::bytes(Cow::from("your content".as_bytes())).file_name("yourfile.txt"), ); let response = client .post("http://localhost:5029/api/Example") .multipart(form) .send() .await .unwrap(); println!("{:?}", response); }
自定义大小切块你直接发送的时候就放在多个Part里,一次post请求上传就好了,到了服务器再把所有Part拼起来,md5就直接作为单独的value一起发。multipart/form-data本来就支持同时携带文本key value对和二进制key value对的。
--
👇
xiaokyo: 这样chunk不能按照自定义大小切块且md5吧
--
👇
Aya0wind: ```rust #[tokio::main] async fn main() { let client = reqwest::Client::new(); let form = reqwest::multipart::Form::new().part( "file", Part::bytes(Cow::from("your content".as_bytes())).file_name("yourfile.txt"), ); let response = client .post("http://localhost:5029/api/Example") .multipart(form) .send() .await .unwrap(); println!("{:?}", response); }
这样chunk不能按照自定义大小切块且md5吧
--
👇
Aya0wind: ```rust #[tokio::main] async fn main() { let client = reqwest::Client::new(); let form = reqwest::multipart::Form::new().part( "file", Part::bytes(Cow::from("your content".as_bytes())).file_name("yourfile.txt"), ); let response = client .post("http://localhost:5029/api/Example") .multipart(form) .send() .await .unwrap(); println!("{:?}", response); }
reqwest需要添加multipart feature。