From a2f4703e5ef01642870d503ef36a38847387417a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 25 Apr 2013 18:43:48 +0200 Subject: Improve static file handler guide chapter Add more infos about MIME types and the file option. --- guide/static_handlers.md | 32 ++++++++++++++++++++++++++++++-- guide/toc.md | 1 + 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/guide/static_handlers.md b/guide/static_handlers.md index 0843599..d6347f0 100644 --- a/guide/static_handlers.md +++ b/guide/static_handlers.md @@ -19,8 +19,7 @@ Static handlers are pre-written REST handlers. They only need to be specified in the routing information with the proper options. The following example routing serves all files found in the -`priv_dir/static/` directory of the application `my_app`. It uses -a mimetypes library to figure out the files' content types. +`priv_dir/static/` directory of the application `my_app`. ``` erlang Dispatch = [ @@ -32,3 +31,32 @@ Dispatch = [ ]} ]. ``` + +You can also serve a single file specifically. A common example +would be an `index.html` file to be served when the path `/` +is requested. The following example will serve the `priv/index.html` +file from the application `my_app`. + +``` erlang +Dispatch = [ + {'_', [ + {"/", cowboy_static, [ + {directory, {priv_dir, my_app, []}}, + {file, "index.html"}, + {mimetypes, {fun mimetypes:path_to_mimes/2, default}} + ]} + ]} +]. +``` + +MIME type +--------- + +Cowboy does not provide any default for MIME types. This means +that unless you specify the `mimetypes` option, all files will +be sent as `application/octet-stream`, which the browser will +not try to interpret, instead trying to make you download it. + +In the examples above we used the +[mimetypes application](https://github.com/spawngrid/mimetypes) +to find the MIME type from the file's extension. diff --git a/guide/toc.md b/guide/toc.md index 6909bed..44c8e22 100644 --- a/guide/toc.md +++ b/guide/toc.md @@ -34,6 +34,7 @@ Cowboy User Guide * [Static handlers](static_handlers.md) * Purpose * Usage + * MIME type * [Request object](req.md) * Purpose * Request -- cgit v1.2.3