我使用以下代码上传带有一些其他参数的图片。
[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)
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中的此博客文章。