多部分表单没有';t接收字段
本文关键字:字段 表单 多部 | 更新日期: 2023-09-27 18:20:53
我正试图将一个文件和模型发送到我的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)
,但返回的错误是请求未命中该方法。也许请求本身包含错误?
我刚刚遇到了同样的问题,幸运的是,我尝试了很多,找到了解决方案。您是否注意到,您的模型内容类型的请求也是表单数据,这就是您不能以这种方式在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
}
是否将encType = "multipart/form-data"
添加到视图中的表单标记中?
成功案例
using (var client = new HttpClient())
using (var content = new MultipartFormDataContent())
{
client.BaseAddress = new Uri(baseAddress);
foreach (var item in paramData)
{
content.Add(new StringContent(item.Value), item.Key);
}
......