【问题标题】:Angular POST multipart/form-data with application/json & text/csvAngular POST multipart/form-data with application/json & text/csv
【发布时间】:2015-12-20 03:07:55
【问题描述】:

问题

尝试使用 JSON 格式的文件上传和模型数据发送 multipart/formdata 发布请求。 不知道为什么没有太多工作参考,无法使工作参考。 可能也做错了什么或使它变得更复杂。

参考尝试

QUICK FIDDLE WITH MY TRIES

问题

不知何故,我的 post 请求负载上的 json 内容似乎不包含 Content-Type: application/json 自动识别。

即使将 POST 的内容类型设置为 undefined/false 也不起作用。 需要有关问题或解决方法的建议吗?

FIDDLE 上传的网络日志

请求标头

Accept:application/json, text/plain, */*
Content-Length:361
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary7NukqN6GtRwugBSJ

请求负载

------WebKitFormBoundary7NukqN6GtRwugBSJ
Content-Disposition: form-data; name="file"; filename="sample.csv"
Content-Type: text/csv


------WebKitFormBoundary7NukqN6GtRwugBSJ
Content-Disposition: form-data; name="data"

{"name":"a good name","comments":"some comments"}
------WebKitFormBoundary7NukqN6GtRwugBSJ--

【问题讨论】:

  • 谢谢。它与小提琴中发布的内容完全相同,但它没有为 json 内容发送该内容类型。你能看看小提琴,看看我是否遗漏了什么?

标签: json angularjs post file-upload multipartform-data


【解决方案1】:

遇到同样的问题。尝试使用 blob,您可以将 blob 中的类型设置为 application/json。你可以用你的值初始化 blob,它对我有用。

【讨论】:

  • 例如:new Blob([{"key":"value"}],{"type":"application/json");
  • 请在您的答案中添加代码而不是评论。
【解决方案2】:

如果您发出“multipart/form-data”请求,那么会自动忽略“application/JSON”标头。您不能在同一个请求中同时拥有两者。这两个发布请求是互斥的。

【讨论】:

  • Accept:是服务端用于内容协商的请求头,通知服务端客户端支持什么样的响应。它没有描述请求负载的内容类型。
猜你喜欢
  • 2019-12-03
  • 2018-12-16
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 2020-11-26
  • 2017-10-31
  • 2011-04-22
  • 1970-01-01
相关资源
最近更新 更多