mirror of
https://github.com/actix/actix-website
synced 2024-12-18 18:03:12 +01:00
2aacdf2f70
* chore: add VS Code extension recommendations * Update image URLs in README and documentation files * chore: disable no-inline-html rule * chore: use standard md/mdx syntax, and use .jsx for react components * chore: fix email links in Code of Conduct The commit message suggests fixing the email links in the Code of Conduct file to use the correct `mailto:` syntax. * chore: update actix-web error helper links Update the links to the `actix-web` error helper traits in the `databases.md` and `errors.md` files to use the correct URLs. * chore: restore unused actix-web error helper links * Update src/pages/community/coc.md Co-authored-by: Rob Ede <robjtede@icloud.com> * Update docs/getting-started.md Co-authored-by: Rob Ede <robjtede@icloud.com> --------- Co-authored-by: Rob Ede <robjtede@icloud.com>
46 lines
2.3 KiB
Markdown
46 lines
2.3 KiB
Markdown
---
|
|
title: Static Files
|
|
---
|
|
|
|
import CodeBlock from "@site/src/components/code_block";
|
|
|
|
# Individual file
|
|
|
|
It is possible to serve static files with a custom path pattern and `NamedFile`. To match a path tail, we can use a `[.*]` regex.
|
|
|
|
<CodeBlock example="static-files" file="main.rs" section="individual-file" />
|
|
|
|
:::warning
|
|
Matching a path tail with the `[.*]` regex and using it to return a `NamedFile` has serious security implications. It offers the possibility for an attacker to insert `../` into the URL and access every file on the host that the user running the server has access to.
|
|
:::
|
|
|
|
## Directory
|
|
|
|
To serve files from specific directories and sub-directories, [`Files`][files] can be used. `Files` must be registered with an `App::service()` method, otherwise it will be unable to serve sub-paths.
|
|
|
|
<CodeBlock example="static-files" file="directory.rs" section="directory" />
|
|
|
|
By default files listing for sub-directories is disabled. Attempt to load directory listing will return _404 Not Found_ response. To enable files listing, use [`Files::show_files_listing()`][showfileslisting] method.
|
|
|
|
Instead of showing files listing for a directory, it is possible to redirect to a specific index file. Use the [`Files::index_file()`][indexfile] method to configure this redirect.
|
|
|
|
## Configuration
|
|
|
|
`NamedFiles` can specify various options for serving files:
|
|
|
|
- `set_content_disposition` - function to be used for mapping file's mime to corresponding `Content-Disposition` type
|
|
- `use_etag` - specifies whether `ETag` shall be calculated and included in headers.
|
|
- `use_last_modified` - specifies whether file modified timestamp should be used and added to `Last-Modified` header.
|
|
|
|
All of the above methods are optional and provided with the best defaults, But it is possible to customize any of them.
|
|
|
|
<CodeBlock example="static-files" file="configuration.rs" section="config-one" />
|
|
|
|
The Configuration can also be applied to directory service:
|
|
|
|
<CodeBlock example="static-files" file="configuration_two.rs" section="config-two" />
|
|
|
|
[files]: https://docs.rs/actix-files/0.6/actix_files/struct.Files.html#
|
|
[showfileslisting]: https://docs.rs/actix-files/0.6/actix_files/struct.Files.html#method.show_files_listing
|
|
[indexfile]: https://docs.rs/actix-files/0.6/actix_files/struct.Files.html#method.index_file
|