使用附加参数作为JSON上载文件

时间:2013-04-08 12:18:20

标签: asp.net-mvc-4 asp.net-web-api

我使用以下代码上传带有一些其他参数的图片。

[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

在表格数据下添加了一个图像文件

原始

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

但问题是count

我得0

1 个答案:

答案 0 :(得分: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/