通过以下代码,我使用Rocket 多段来提供静态文件:
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
use std::path::PathBuf;
use rocket::response::NamedFile;
use std::path::Path;
#[get("/public/<file..>")]
fn files(file: PathBuf) -> Option<NamedFile> {
NamedFile::open(Path::new("static/").join(file)).ok()
}
fn main() {
rocket::ignite()
.mount("/public", routes![files])
.launch();
}使用上面的服务器,在/public/<path..>上对文件的请求应该通过返回/static/<path..>的内容来处理,对吗?
然后在浏览器上输入域名以及/public/和多段路由路径(例如,*.jpg文件),但它不能提供该文件:

据我所知,JPG文件存在。我不知道我错过了什么!
更新
我还尝试使用内置模块这样做:
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
use rocket_contrib::serve::StaticFiles;
fn main() {
rocket::ignite()
.mount("/public", StaticFiles::from("/static"))
.launch();
}但也不起作用。不知道为什么!
发布于 2021-04-13 16:28:30
解决以下问题:
.mount("/", StaticFiles::from("static"))意味着静态文件夹应该位于服务器可执行文件的旁边。static文件夹放在它旁边。https://stackoverflow.com/questions/67075970
复制相似问题