Cowboy:你如何呈现来自处理程序的静态 html 文件?
Posted
技术标签:
【中文标题】Cowboy:你如何呈现来自处理程序的静态 html 文件?【英文标题】:Cowboy: How do you present a static html file from a handler? 【发布时间】:2020-09-07 03:17:31 【问题描述】:我正在使用牛仔,我有一个 post 方法用于检查用户名和密码的处理程序。这一切都很好。
许多示例展示了如何返回简单的 hello 消息作为响应。不幸的是,我想提供一个 html 文件以响应正确的详细信息,但我看不到如何从处理程序中执行此操作?
我知道如何使用牛仔静态文件处理程序提供静态文件,但我不知道如何通过我自己的处理程序提供静态文件。
【问题讨论】:
您好,进一步阅读 Nine Nines 网站表明您可以添加一个 sendfile 元组。 ninenines.eu/docs/en/cowboy/2.5/guide/resp 元组必须包含文件长度。任何人都知道如何使用 erlang 有效地计算文件长度?谢谢 以下代码有效,但我必须手动输入文件长度。请求 = cowboy_req:reply(200, #> => >, sendfile, 0, 2591, "/home/cowboy/examples/eventsource/priv /Device.html", Req0),此解决方案的两个问题是:1) 您必须手动设置文件长度。不确定如何在 Erlang 中执行此操作。 2)您必须提供文件的完整路径。想使用priv_dir。 MPC 【参考方案1】:最后一个使用 priv_dir 并解决文件大小问题的解决方案:
FileSize=filelib:file_size(code:priv_dir(eventsource)++"/CP.html"),
Req = cowboy_req:reply(200, #<<"content-type">> => <<"text/html">>,
sendfile, 0, FileSize, code:priv_dir(eventsource) ++ "/CP.html", Req0),
【讨论】:
以上是关于Cowboy:你如何呈现来自处理程序的静态 html 文件?的主要内容,如果未能解决你的问题,请参考以下文章