首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个段提供静态文件

使用多个段提供静态文件
EN

Stack Overflow用户
提问于 2021-04-13 13:36:20
回答 1查看 643关注 0票数 1

通过以下代码,我使用Rocket 多段来提供静态文件:

代码语言:javascript
复制
#![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文件存在。我不知道我错过了什么!

更新

我还尝试使用内置模块这样做:

代码语言:javascript
复制
#![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();
}

但也不起作用。不知道为什么!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-13 16:28:30

解决以下问题:

  1. 注意绝对路径与相对路径差异:.mount("/", StaticFiles::from("static"))意味着静态文件夹应该位于服务器可执行文件的旁边。
  2. 在适当的工作目录中运行服务器可执行文件,并将static文件夹放在它旁边。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67075970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档