gpt4 book ai didi

elixir - Phoenix - 在 POST 响应中发送字节

转载 作者:行者123 更新时间:2023-12-04 13:18:32 25 4
gpt4 key购买 nike

我有一个在内存中生成 PDF 的应用程序。我需要将该 PDF 返回给浏览器。该请求是 POST 类型,但我在使用 send_download 时遇到问题。目前,我只能使用 GET 请求使其工作。

这是我尝试过的:

在 Controller 中,如果请求是获取,这会起作用:(注意 pdf 是字节(<<37, 56, 66 ...>> 等)

send_download(conn, {:binary, pdf}, [filename: "doc.pdf"]

但是,如果我将请求转换为 POST,这将不起作用。当我这样做时,服务器上没有错误。

我也试过:
  conn
|> put_resp_content_type("application/pdf")
|> put_resp_header("content-disposition", "attachment; filename=html.pdf")
|> send_file(200, pdf)

但是当我尝试时出现以下错误:

cannot send_file/5 with null byte



保存字节的 pdf var 不为空。在此之前我有一个检查,它不是零。

我已经搜索过,似乎无法找到看似如此简单的事情的答案。
send_file 似乎不是正确的函数,因为文档说它需要一个完整的路径而不是字节的文件......

我试图避免将文件写入磁盘。

提前致谢。

最佳答案

我找到了解决方案:
send_file 需要文件的完整路径而不是二进制数据。请改用 send_resp。

 conn
|> put_resp_content_type("application/pdf")
|> put_resp_header("content-disposition", "attachment; filename=html.pdf")
|> Plug.Conn.send_resp(:ok, pdf)

关于elixir - Phoenix - 在 POST 响应中发送字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57164639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com