2016-06-20 7 views
2

Есть ли способ прочитать и визуализировать статический html-файл, расположенный по адресу другой части на сервере в контроллере? Я не хочу перенаправлять или обслуживать эту страницу через функции статических страниц.Render static html page в контроллере

ответ

6

Для этого вы должны использовать 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") 

Обратите внимание, что я должен был вручную добавить заголовок content-type, чтобы получить такое же поведение, как Phoenix.Controller.html/2.

1

Вы можете использовать функцию Phoenix.Controller.html/2 для отправки пользовательского содержимого html. Прочитайте файл с File.read!/2 и отправьте его клиенту.

def index(conn, _params) do 
    html(conn, File.read!("path/to/file.html")) 
end 

Надеюсь, это поможет.