在控制器中渲染静态html页面

elp*_*dev 2 elixir phoenix-framework

有没有办法读取和呈现位于控制器服务器上另一部分的静态html文件?我不打算通过静态页面功能重定向或提供此页面.

Dog*_*ert 7

你应该用Plug.Conn.send_file/5它.此函数将比将整个文件读入内存更有效地发送文件内容,然后使用Phoenix.Controller.html/2以下命令发送:

conn
|> put_resp_header("content-type", "text/html; charset=utf-8")
|> Plug.Conn.send_file(200, "/path/to/html")
Run Code Online (Sandbox Code Playgroud)

请注意,我必须手动添加content-type标头以获得与之相同的行为Phoenix.Controller.html/2.

  • 如果您要发送的文件是随应用程序本身一起分发的,则您不希望硬编码该文件的完整路径,因为它可能会发生变化。相反,您应该将文件放在 `priv` 目录中,并传递 `Application.app_dir(:your_app, "priv/path/to/file")` 作为 `send_file/3` 中的路径。 (2认同)