Rust/actix-web multipart/form-data GET响应

wvyml7n5  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(285)

Actix-web在他们的github页面上有一个例子,代码如下。https://github.com/actix/examples/blob/master/forms/multipart/src/main.rs
守则

#[derive(Debug, MultipartForm)]
struct UploadForm {
    #[multipart(rename = "file")]
    files: Vec<TempFile>,
}

async fn save_files(
    MultipartForm(form): MultipartForm<UploadForm>,
) -> Result<impl Responder, Error> {
    for f in form.files {
        let path = format!("./tmp/{}", f.file_name.unwrap());
        log::info!("saving to {path}");
        f.file.persist(path).unwrap();
    }

    Ok(HttpResponse::Ok())
}

我理解并在我的项目中使用此代码作为上传函数,它将文件保存到名为uploads的文件夹中。此函数接受multipart/form-data并将“files”数组保存到磁盘。然而,我不知道如何创建附带的下载函数。
或者在我的例子中是一个预览功能。它从uploads文件夹中获取所有内容,并以multipart/form-data的形式将它们发送回前端,以显示上传文件的预览。
(额外的上下文,我不发送原始文件,但现在一个svg。然而,文件的类型应该不重要,我的问题是发送multipart/form-data从后端到前端)
我使用的是actix-web ^4和actix-multipart 0.6.0
我试着自己创建内容配置,使用actix_multipart::Multipart::new,它接受一个headerMap和一个流(我不知道如何通过HttpResponse发送),以及我在谷歌上找到的每一个谈论actix multipart的链接,但大多数都只谈论上传,没有一个关于下载。甚至问chat-gpt,这一如既往地没有帮助:)

0pizxfdo

0pizxfdo1#

我将以另一种方式执行此任务。使用NamedFile进行单文件请求。只是想优化以减少请求。可能会在稍后重新选择并更新。现在它必须这样做。

相关问题