我正在进行分段上传。它的请求标题如下:
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
?
答案 0 :(得分:1)
原来问题是我通过ja_serializer来处理请求。特别是由于this line。显然,这不是一个json:api请求,所以它不应该在那里通过管道输送。
答案 1 :(得分:0)
在config / config.exs中配置mime项目(例如xml):
config :mime, :types, %{
"application/xml" => ["xml"]
}
然后运行mix deps.clean --build mime
以强制在所有环境中重新编译mime。你现在应该好好去。
您可以检查它是否被识别为mime类型I.E:
iex -S mix
iex> MIME.extensions("application/xml")