gpt4 book ai didi

elixir - 413 请求实体太大 Elixir 插件

转载 作者:行者123 更新时间:2023-12-04 01:37:08 25 4
gpt4 key购买 nike

我正在发送 base64 格式的图像,然后用它创建图像并将其发送到 AWS。

一开始我以为是 Nginx 的问题。所以我将 client_max_body_size 更改为最大值,但它不起作用。我仍然收到 413 Request Entity Too Large 错误。

只有在我发送高分辨率图像的 Base64 字符串时才会发生这种情况。因为我们使用 Plug 来验证请求。我刚刚发现Plug Parser Behaviour .我创建的插件是:

defmodule EvercamMediaWeb.AuthenticationPlug do
import Plug.Conn

def init(_opts) do
end

def call(conn, _) do
api_id = extract_credential(conn, %{header: "x-api-id", query: "api_id"})
api_key = extract_credential(conn, %{header: "x-api-key", query: "api_key"})
token =
conn
|> extract_credential(%{header: "authorization", query: "authorization"})
|> String.downcase
|> String.replace_leading("bearer ", "")

case EvercamMediaWeb.Auth.validate(api_id, api_key, token) do
:valid ->
conn
{:valid, user} ->
conn
|> assign(:current_user, user)
:invalid ->
conn
|> put_resp_content_type("application/json")
|> resp(401, Poison.encode!(%{message: "Invalid API keys"}))
|> send_resp
|> halt
end
end

defp extract_credential(conn, %{header: header_name, query: query_string_name}) do
extract_credential_from_query_string(conn, query_string_name) || extract_credential_from_header(conn, header_name)
end

defp extract_credential_from_query_string(conn, query_string_name) do
Map.get(conn.params, query_string_name)
end

defp extract_credential_from_header(conn, header_name) do
conn
|> Plug.Conn.get_req_header(header_name)
|> List.first
|> to_string
end
end

如何修改插件的行为以使用 :query_string_length &

 {:multipart, length: 20_000_000} # Increase to 20MB max upload

在上面的插件中,所以它可以支持最大字符串大小,也可以上传到最大。

提前致谢。

最佳答案

在您的 MyAppWeb.Endpoint 文件中,您应该有类似 configure the parser 的内容:

plug Plug.Parsers,
parsers: [:urlencoded, :multipart, :json],
pass: ["*/*"],
json_decoder: Poison

解析器改为:

  parsers: [:urlencoded, 
{:multipart, length: 20_000_000},
:json]
query_string_length: 1_000_000,

关于elixir - 413 请求实体太大 Elixir 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49230116/

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