Rust 为具有多个段的静态文件提供服务

Rust 为具有多个段的静态文件提供服务,rust,rust-rocket,Rust,Rust Rocket,我使用Rocket提供静态文件,代码如下: #![功能(过程宏、数据宏)] #[macro_use]外部板条箱火箭; 使用std::path::PathBuf; 使用rocket::response::NamedFile; 使用std::path::path; #[获取(“/public/”) fn文件(文件:PathBuf)->选项{ NamedFile::open(路径::new(“static/”).join(文件)).ok() } fn main(){ 火箭:点火 .mount(“/pu

我使用Rocket提供静态文件,代码如下:

#![功能(过程宏、数据宏)]
#[macro_use]外部板条箱火箭;
使用std::path::PathBuf;
使用rocket::response::NamedFile;
使用std::path::path;
#[获取(“/public/”)
fn文件(文件:PathBuf)->选项{
NamedFile::open(路径::new(“static/”).join(文件)).ok()
}
fn main(){
火箭:点火
.mount(“/public”,路由![文件])
.launch();
}
使用上面的服务器,对
/public/
上文件的请求应该通过返回
/static/
的内容来处理,对吗

然后在我的浏览器上,我输入域名以及
/public/
和多段路由路径,例如
*.jpg
文件,但它无法提供该文件:

据我所知,JPG文件存在。我不知道我错过了什么

更新 我还尝试使用内置模块来实现这一点:

#![功能(过程宏、数据宏)]
#[macro_use]外部板条箱火箭;
使用rocket_contrib::serve::StaticFiles;
fn main(){
火箭:点火
.mount(“/public”,StaticFiles::from(“/static”))
.launch();
}
但它也不起作用。不知道为什么

要解决:

  • 请注意绝对路径与相对路径的差异:
    .mount(“/”,StaticFiles::from(“static”)
    表示静态文件夹应该位于服务器可执行文件的旁边
  • 在正确的工作目录中运行服务器可执行文件,并将
    static
    文件夹放在其旁边