user1618825
user1618825

Reputation:

File Upload with Additional Parameters as JSON

I am using the below code to upload image with some additional parameters.

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

I tried checked this method using postman chrome extension. I passed these values

Under Headers

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

Under form-data added one image file

Under raw

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

But the problem i am getting 0 for count

Upvotes: 0

Views: 2411

Answers (1)

Rick Strahl
Rick Strahl

Reputation: 17681

The Content-Type should be multipart/form-data not application/json for your code to work. A typical content type looks like this:

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

The actual post data then contains blocks of 'data' separated by the boundary. These blocks can contain a content type, but they don't have to. If you're doing file uploads the content type should not matter - the filename is what determines the type.

All that said, with WebAPI you shouldn't be using the ASP.NET HttpContext object, but rather the lower level Web API semantics. While what you're doing works as long as you run inside of the ASP.NET stack, if you self-host or maybe in the future run ontop of a different stack like OWin/Katana this code will no longer work.

To handle file uploads with Web API specific code check out this blog post from Filip W.

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

Upvotes: 1

Related Questions