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

Bad*_*ops 1 elixir phoenix-framework

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

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

请问我该怎么做?

Jag*_*h N 6

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
Run Code Online (Sandbox Code Playgroud)


Mar*_*rle 5

也许这对你有帮助: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})
Run Code Online (Sandbox Code Playgroud)