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,这一如既往地没有帮助:)
1条答案
按热度按时间0pizxfdo1#
我将以另一种方式执行此任务。使用NamedFile进行单文件请求。只是想优化以减少请求。可能会在稍后重新选择并更新。现在它必须这样做。