我正在关注这个 blog post使用 C# Web API 上传图像。
这篇文章解释了如何使用 ARC 来完成它并且它工作正常。
但是当我尝试使用 POSTMAN 做同样的事情时,它失败了。
这是我的请求快照。
最佳答案
TL;DR:除了您在工具中显式设置Content-Type header 外,您所做的一切都是正确的。摆脱 header ,您的问题将得到解决。
详细说明:首先,您使用工具中正文 选项卡中的form-data 选项附加文件:
当您选择文件时,Postman 会自动检测Content-Type。然后在幕后,Postman 在我们不知情的情况下将自动检测到的 Content-Type 插入到 POST 请求中。因此,我们自己明确设置 Content-Type header 会弄乱请求。
将 Content-Type header 的值设置为 multipart/form-data 涉及设置文件多个部分边界的复杂概念,详见 here .它可能容易出错。因此,设置边界的繁重工作是由工具本身自动为我们完成的。这就是为什么它不希望我们在这种情况下显式设置 content-type header 的原因。请查看我在将图像文件上传到我的 PC 时如何仅设置 Authorization header (参见屏幕截图):
Authorization header 是可选 header 。仅当您在 Web 服务器上设置了某种身份验证时才需要它。因此,如果您的网站允许匿名访问,那么您案例中的标题标签应该是空的,即根本没有键值对。
注意:仅供引用,POST 请求中图像文件的正确内容类型是multipart/form-data,即使我们不需要设置它明确地在工具中。问题中的屏幕截图显示 Content-Type header 被设置为 application/x-www-form-urlencoded 这是不正确的。
关于c# - 通过 POSTMAN 发送时 HttpRequest.Files 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069643/