最终,我希望有一个简单的文件上传页面,使用尽可能基本的 jQuery 代码和服务器上的 c# 代码,但我一直在服务器上收到空 IFormFile。
有很多示例说明了如何使用带有表单数据的 Ajax POST 并在 ASP.NET Web API 控制器操作上接收 IFormFile。然而,似乎他们每个人都不得不尝试对代码进行多次调整才能使其正常工作。
我用 API 部分做了一个简单的解决方案,并使用 Postman 向它发送文件。我尝试了 Content-Type 和 Accept 标头的不同组合,但我总是收到一个空文件。
为了满足一些托管要求,我使用 OWIN 来自托管应用程序。这是控制器代码,我使用了默认值控制器并编辑了后期操作...
public string Post([FromBody]IFormFile file)
{
if (file != null)
{
return "Success: We got something!!!";
}
else
{
return "ERROR: We got nothing :-(";
}
}
我的 StartUp.cs 配置如下。尽管我的示例显示了 multipart/form-data,但我也尝试了 application/JSON 和其他格式,包括将它们留空。
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute("default", "{controller}");
config.EnableCors();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("multipart/form-data"));
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
然后这里是我最近的邮递员尝试的 2 个屏幕截图。我已经匆忙将它们放在 Wix 服务器上,如果它们还不可见,我深表歉意
在这一点上,我很高兴 Post 方法接收到一个文件的非空值。