< 返回版块

xiaokyo 发表于 2022-07-21 19:09

Tags:reqwest, tokio, upload, chunk, multipart, file

如题, 希望有人整个例子, 麻烦了 最近有个需求很需要这个

已经困扰一个星期了 查询了很多, 但是就是不知道reqwest的form怎么生成文件字段的值

评论区

写评论
作者 xiaokyo 2022-07-22 20:20

十分感谢回复

--
👇
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。


Aya0wind 2022-07-22 18:37

自定义大小切块你直接发送的时候就放在多个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。

作者 xiaokyo 2022-07-22 17:45

这样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。
Aya0wind 2022-07-21 20:05
#[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。

1 共 4 条评论, 1 页