12 个问题
你好,
我能够通过将其添加到 WebApiConfig.cs 来消除原始错误:
这只会使 ASP.NET 将“multipart/form-data”请求路由到您的控制器。 它无法反序列化表单值并将它们绑定到方法的参数。
您可以通过 HTML 表单直接将文件上传到 API。参考此文档:在 ASP.NET Web API 中发送 HTML 表单数据:文件上传和多部分 MIME 这是代码示例:
<form name="form1" method="post" enctype="multipart/form-data" action="/api/test">
<div>
<label for="Data">Data</label>
<input name="Data" type="text" />
</div>
<div>
<label for="File"> File</label>
<input name="File" type="file" />
</div>
<div>
<input type="submit" value="Submit" />
</div>
</form>
public class TestController : ApiController
{
[HttpPost]
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);//get FileName
Trace.WriteLine("Server file path: " + file.LocalFileName);//get File Path
}
return Request.CreateResponse(HttpStatusCode.OK, "pass upload file successed!");
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
}
如果答案是正确的解决方案,请单击“接受答案”并请投赞成票。如果您对此答案有其他疑问,请点击“评论”。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。
最好的问候