0

我正在使用以下代码上传带有一些附加参数的图像。

[HttpPost]
    public HttpResponseMessage Upload(Data data)
    {
        var count = HttpContext.Current.Request.Files.Count;
        return null;
    }

postman我尝试使用chrome 扩展检查此方法。我传递了这些值

在标题下

enctype: multipart/form-data
Content-Type: application/json

在form-data下添加了一个图片文件

生下

{
 "Id": "1",
  "ModifiedBy" : "1"
}

但我得到 0 的问题count

4

1 回答 1

1

Content-Type 应该是 multipart/form-data 而不是 application/json 以使您的代码正常工作。典型的内容类型如下所示:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvmxBBVAoH3KRsa9L

然后,实际的帖子数据包含由边界分隔的“数据”块。这些块可以包含内容类型,但它们不是必须的。如果您正在上传文件,则内容类型无关紧要 - 文件名决定了类型。

综上所述,对于 WebAPI,您不应该使用 ASP.NET HttpContext 对象,而应该使用较低级别的 Web API 语义。虽然只要您在 ASP.NET 堆栈内运行,您所做的工作就可以工作,但如果您自己托管或将来在 OWin/Katana 等不同的堆栈上运行,则此代码将不再工作。

要使用特定于 Web API 的代码处理文件上传,请查看 Filip W 的这篇博文。

http://www.strathweb.com/2012/04/html5-drag-and-drop-asynchronous-multi-file-upload-with-asp-net-webapi/

于 2013-04-08T13:31:45.397 回答