从HTTP客户端到C#Web Api的图像上载

从HTTP客户端到C#Web Api的图像上载,c#,.net,dhc,C#,.net,Dhc,我正在尝试将图像从()上传到我的C#API。将来我想从Android或iPhone应用程序调用这个API,但我想在任何这样的设备上实现它之前,我需要这个部分工作 此C#代码放在我的api:s ValuesController中。默认情况下我调用的控制器。我已经确保(通过断点)可以访问并正确调用下面的方法 public async Task<HttpResponseMessage> PostFormData() { // Check if the request

我正在尝试将图像从()上传到我的C#API。将来我想从Android或iPhone应用程序调用这个API,但我想在任何这样的设备上实现它之前,我需要这个部分工作

此C#代码放在我的api:s ValuesController中。默认情况下我调用的控制器。我已经确保(通过断点)可以访问并正确调用下面的方法

public async Task<HttpResponseMessage> PostFormData()
    {
        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);

        try
        {
            // Read the form data.
            await Request.Content.ReadAsMultipartAsync(provider);

            // This illustrates how to get the file names.
            foreach (MultipartFileData file in provider.FileData)
            {
                Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                Trace.WriteLine("Server file path: " + file.LocalFileName);
            }
            return Request.CreateResponse(HttpStatusCode.OK);
        }
        catch (System.Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }

我错过了什么?对于上述方法,我似乎忘记了提及mimetype

检查发送数据的输入

确保其基本属性设置为:

  • 姓名:
  • 类型:
  • 价值:(我认为这不是必要的。)

    
    
这些都是MIME被认为是完整的并且可以由处理程序正确映射的必要条件


您应该发布代码的HTML端,以确保它是相同的问题。

Simon,尝试将“name”添加到输入控件中,您可能会丢失它

<input type="file" id="fileInput" name="fileInput"/> 

 await Request.Content.ReadAsMultipartAsync(provider);
<input type="file" name="dataFile" value="Choose..."  multiple/>
<input type="file" id="fileInput" name="fileInput"/>