多部分表单不接收字段

时间:2015-11-05 14:49:00

标签: c# asp.net api http

我正在尝试将文件和模型提供给我的api控制器并通过发送来自fiddler的请求进行测试。到目前为止,我已经设法使用MultipartDataMediaFormatter接收文件,但我无法接收字段。 some变量将为空:

    [HttpPost]
    public IHttpActionResult Add(FormData formData)
    {
        HttpFile file;
        formData.TryGetValue("fieldNameHere", out file);
        string some;
        formData.TryGetValue("code", out some);

请求是

---------------------------acebdf13572468    
Content-Disposition: form-data; name="fieldNameHere"; filename="result.pdf"    
Content-Type: application/pdf

<@INCLUDE *C:\Users\mikhail.yakhyaev\Documents\result.pdf*@>

---------------------------acebdf13572468    
Content-Disposition: form-data; name="code" 

asdf

---------------------------acebdf13572468--

我已尝试将签名设为IHttpActionResult Add(HttpPostedFileBase fieldNameHere),但返回的错误是请求未触及该方法。 也许请求本身包含错误?

2 个答案:

答案 0 :(得分:0)

我只是遇到了同样的问题,幸运地尝试了很多并找到了解决方案。 您是否注意到您的模型内容类型的请求也是表单数据,这就是您不能以这种方式在api中使用FormData的原因。代码:

public IHttpActionResult Add(FormData formData)
{
   foreach(var fileValue in formData.Files){
     //do any you want
   }
   foreach(var field in formData.Fields){
     //do any you want
   }
   //may that be helpful
}

答案 1 :(得分:0)

您是否在视图中将encType = "multipart/form-data"添加到了表单标记中?