Vapor 大型教程
提供文件下载
网站离不开图片、样式表这些静态资源。本文用 Vapor 3 的 FileMiddleware 把 Public 目录变成文件服务根目录,轻松托管与下载文件。
一、什么是文件服务
几乎每一个网站都需要存放一些静态文件,例如图片和样式表文件。通常这需要 CDN 或 Nginx/Apache 来托管,而 Vapor 提供了 FileMiddleware 模块来完成这些事情。
要使用文件服务中间件,需要在 configure.swift 里注册它。默认使用 Public 目录作为文件服务的根目录,里面的文件可以是图片、样式表等:
...
var middlewares = MiddlewareConfig() // Create _empty_ middleware config
/// middlewares.use(FileMiddleware.self) // Serves files from `Public/` directory
middlewares.use(ErrorMiddleware.self) // Catches errors and converts to HTTP response
middlewares.use(FileMiddleware.self) //
services.register(middlewares)
...
小提示:
FileMiddleware 默认只服务 Public/ 目录。把文件放进这里,浏览器就能通过根路径直接访问,例如 /images/logo.png。二、在页面里引用静态文件
在 Public 目录下放置一张图片,比如 Public/images/logo.png,然后修改 index.leaf,用相对路径引用它:
...
<img src="/images/logo.png" class = "mx-auto d-block" alt="TIL Logo" />
<h1>Acronyms</h1>
...
这样首页就能显示这张 logo,浏览器访问 /images/logo.png 时,FileMiddleware 会自动把 Public/images/logo.png 返回给客户端——也就是「提供文件下载 / 资源服务」的效果。