单个文件
可以使用自定义路径模式和 NamedFile
来提供静态文件。要匹配路径尾部,我们可以使用 [.*]
正则表达式。
warning
使用 [.*]
正则表达式匹配路径尾部并返回 NamedFile
有严重的安全隐患。它可能允许攻击者在 URL 中插入 ../
,从而访问服务器用户有权限访问的所有主机文件。
目录
要从特定目录和子目录提供文件,可以使用 Files
。Files
必须通过 App::service()
方法注册,否则将无法提供子路径服务。
默认情况下,子目录的文件列表是禁用的。尝试加载目录列表将返回 404 Not Found 响应。要启用文件列表,请使用 Files::show_files_listing()
方法。
除了显示目录的文件列表,还可以重定向到特定的索引文件。使用 Files::index_file()
方法配置此重定向。
配置
NamedFiles
可以指定各种选项来提供文件:
set_content_disposition
- 用于将文件的 mime 映射到相应Content-Disposition
类型的函数use_etag
- 指定是否应计算并包含ETag
在头信息中。use_last_modified
- 指定是否应使用文件修改时间戳并添加到Last-Modified
头信息中。
以上所有方法都是可选的,并提供了最佳默认值,但可以自定义其中的任何一个。
配置也可以应用于目录服务: