【发布时间】:2021-09-18 19:47:29
【问题描述】:
我有一个链接列表,我想从中随机提供数据,就好像用户自己手动访问了网址一样。这些不是所有相同的内容/文件类型,但是它们都是图像(jpeg 和 png)(理想情况下,我想对任何文件类型执行此操作,而不仅仅是 jpeg 和 png 或只是图像)。我知道我可以像这样直接将它们作为八位字节流提供,但这将导致文件被下载,而不是内联显示。我考虑过根据链接扩展名更改内容类型,但我找不到任何关于如何使用编译时未知的内容类型的信息。我也觉得可能有比这更好的方法。 How to forward data from a reqwest::blocking::Body in a Rocket responder? 似乎与我的问题有些相似,但文件类型始终为 png。我正在使用火箭的v0.5-rc。
#[get("/rand_img")]
async fn get_img() -> Vec<u8> {
let vs = vec![
"https://www.publicdomainpictures.net/pictures/320000/velka/background-image.png",
"https://www.publicdomainpictures.net/pictures/410000/velka/cobalt-city-1.png",
"https://www.publicdomainpictures.net/pictures/60000/velka/went-boating.jpg",
"https://www.publicdomainpictures.net/pictures/30000/velka/paulino-nacht.jpg"
];
let choice = vs.choose(&mut rand::thread_rng()).unwrap();
let response = reqwest::get(*choice).await.unwrap().bytes().await.unwrap();
response.to_vec()
}
【问题讨论】:
-
您不只是发送 302 是否有更深层次的原因?
-
@user2722968 不是真的,这不是什么重要的事情,我只是想看看是否可以这样做,我在其他任何地方都找不到任何有关此的信息。
标签: rust rust-rocket