Static Files
A static file is any file that resides in the server's storage.
Crow supports returning static files as responses either implicitly or explicitly.
Implicit¶
Crow implicitly returns any static files placed in a static
directory and any subdirectories, as long as the user calls the endpoint /static/path/to/file
.
The static folder or endpoint can be changed by defining the macros CROW_STATIC_DIRECTORY "alternative_directory/"
and CROW_STATIC_ENDPOINT "/alternative_endpoint/<path>"
.
static directory changes the directory in the server's file system, while the endpoint changes the URL that the client needs to access.
Explicit¶
You can directly return a static file by using the crow::response
method response.set_static_file_info("path/to/file");
. The path is relative to the working directory.
Warning
The path to the file is sanitized by default. it should be fine for most circumstances but if you know what you're doing and need the sanitizer off you can use response.set_static_file_info_unsafe("path/to/file")
instead.
Note
Crow sets the content-type
header automatically based on the file's extension, if an extension is unavailable or undefined, Crow uses text/plain
, if you'd like to explicitly set a content-type
, use response.set_header("content-type", "mime/type");
AFTER calling set_static_file_info
.
Note
Please keep in mind that using the set_static_file_info
method means any data already in your response body is ignored and not sent to the client.