繁体   English   中英

Phoenix分段文件上传结果为415不支持的媒体类型

[英]Phoenix multipart file upload results in 415 Unsupported Media Type

我正在分段上传。 其请求标头如下所示:

Accept:application/json,text/javascript
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.9
Connection:keep-alive
Content-Length:733
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary9Am5omyM263xjTB2
Host:localhost:4200
Origin:http://localhost:4200
Referer:http://localhost:4200/users/asdf/profile
User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1

我收到415 Unsupported Media Type作为响应。 但是,我相信Phoenix已配置为接受多部分请求。 在我的配置中:

config :mime, :types, %{
  "application/vnd.api+json" => ["json-api"],
  "multipart/form-data" => ["multipart"]
}

在我的路由器中:

plug :accepts, ["json", "json-api", "multipart"]

知道发生了什么吗? 我想知道这是否与Accept-Enconding

原来的问题是我正在通过ja_serializer传递请求。 特别是由于此行 显然,这不是json:api请求,因此无论如何都不应该通过它进行管道传输。

在config / config.exs(例如xml)中配置mime项目之后:

config :mime, :types, %{
  "application/xml" => ["xml"]
}

然后运行mix deps.clean --build mime强制mime在所有环境中重新编译。 您现在应该走了。

您可以检查它是否被识别为MIME类型IE:

iex -S mix
iex> MIME.extensions("application/xml")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM