Elixir Phoenix Serve S3 图片

Elixir Phoenix Serve S3 Image

我想请求一个 S3 映像,然后使用 Phoenix 提供它。

def getImage(conn, %{"id" => uuid}) do
   file = ExAws.S3.get_object("bucket", "images/image.jpg")
   |> ExAws.request

   conn
   |> put_resp_content_type("image/jpg")
   |> put_resp_header(
      "content-disposition",
      "attachment; filename=\"file.jpg\""
   )
   |> send_resp(200, file)
end

我找到了无数关于如何上传到 S3 的教程,但没有关于检索的教程。先感谢您!

您必须针对 get_object 函数进行模式匹配并从中提取图像内容。

def getImage(conn, %{"id" => uuid}) do
  {:ok, %{body: image_content}} = ExAws.S3.get_object("bucket", "images/image.jpg")
  |> ExAws.request

  conn
  |> put_resp_content_type("image/jpg")
  |> put_resp_header(
    "content-disposition",
    "attachment; filename=\"file.jpg\""
  )
  |> send_resp(200, image_content)
end