c# - 通过 POSTMAN 发送时 HttpRequest.Files 为空

标签 c# .net asp.net-web-api file-upload postman

我正在关注这个 blog post使用 C# Web API 上传图像。

这篇文章解释了如何使用 ARC 来完成它并且它工作正常。

但是当我尝试使用 POSTMAN 做同样的事情时,它失败了。

这是我的请求快照。

enter image description here

enter image description here

最佳答案

TL;DR:除了您在工具中显式设置Content-Type header 外,您所做的一切都是正确的。摆脱 header ,您的问题将得到解决。

详细说明:首先,您使用工具中正文 选项卡中的form-data 选项附加文件:

enter image description here

当您选择文件时,Postman 会自动检测Content-Type。然后在幕后,Postman 在我们不知情的情况下将自动检测到的 Content-Type 插入到 POST 请求中。因此,我们自己明确设置 Content-Type header 会弄乱请求。

Content-Type header 的值设置为 multipart/form-data 涉及设置文件多个部分边界的复杂概念,详见 here .它可能容易出错。因此,设置边界的繁重工作是由工具本身自动为我们完成的。这就是为什么它不希望我们在这种情况下显式设置 content-type header 的原因。请查看我在将图像文件上传到我的 PC 时如何仅设置 Authorization header (参见屏幕截图):

enter image description here

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/

相关文章:

c# - Cookie 与 FormsAuthentication.SetAuthCookie() 方法混淆

c# - 域对象中的自增 ID

c# - C#中的文件创建时间

asp.net-mvc - 为什么我不能将普通 View 与 ApiController 一起使用?

java - Java 是否有与 C# 等价的 out 关键字

c# - 两个常见错误阻止该网站正常工作

c# - 图像到字节数组的转换

c# - 如何查询查询结果集中所有字段的内容?

asp.net-mvc - 为什么 ASP.NET Web API 2 中不调用 ExecuteResult() 方法?

angularjs - ADFS/Web Api/Angularjs 单点登录