如何在凤凰城本地下载或保存文件

时间:2018-04-02 12:03:22

标签: elixir phoenix-framework

我找到了一种使用 arc arc_ecto 在本地上传附件的方法。然而,我想找到一种方法,我的应用程序的用户只需单击浏览器上的下载按钮即可下载或保存这些上传的文件。下载的文件将位于单独的文件夹中。

我经历了很多来源,但我似乎还没有得到它。

请问我该怎么做?

2 个答案:

答案 0 :(得分:1)

也许这有助于您:https://hexdocs.pm/phoenix/Phoenix.Controller.html#send_download/3

  

发送给定文件或二进制文件作为下载。

在Phoenix控制器中,使用上传文件的路径调用该函数。

  

发送存储在应用程序priv目录中的文件:

path = Application.app_dir(:my_app, "priv/prospectus.pdf")
send_download(conn, {:file, path})

答案 1 :(得分:0)

def download_csv(conn, %{"id" => id}) do
  company = Repo.get!(Company, id)

  file = File.read!("files/#{company.id}.csv")

  conn
   |> put_resp_content_type("text/csv")
   |> put_resp_header(
    "content-disposition",
    "attachment; filename=\"#{company.id}.csv\"")
   |> send_resp(200, file)
  end
end