【问题标题】:ASP.NET 5: Upload file through WebApiASP.NET 5:通过 WebApi 上传文件
【发布时间】:2015-11-22 14:48:25
【问题描述】:

我正在使用 Jquery.ajax 向 WebApi 发送文件 我有一个接收文件的 ASP.NET 方法

[HttpPost]
[ActionName("import")]
public int Import([FromBody]IFormFile upload)

在 Import 方法中可以保存 Request.Body 并且看起来是正确的:

------WebKitFormBoundaryZLHvtGDqa5zp0JHB Content-Disposition: form-data;名称="上传";文件名="test.b3d" 内容类型:application/octet-stream

你好世界内容!

但上传变量始终为空!我应该如何修复“上传”变量中的文件内容?

PS:我使用此代码将文件发送到服务器:

    // Create a formdata object and add the files
    var data = new FormData();
    data.append("upload", file.files[0]);

    jQuery.ajax({
        type: "POST",
        url: "/api/designer/import",
        contentType: "application/json",
        dataType: 'json',
        processData: false,
        data: data
    })

Chrome 中的请求标头:

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,ru;q=0.6
Connection:keep-alive
Content-Length:28855
Content-Type:application/x-www-form-urlencoded
Host:localhost:64867
Origin:http://localhost:64867
Referer:http://localhost:64867/
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
X-Requested-With:XMLHttpRequest

【问题讨论】:

  • 您能分享一下请求标头在 chrome 中的样子吗?
  • 是的,我已将其添加到问题中。

标签: asp.net-web-api2 asp.net-core


【解决方案1】:

去掉参数上修饰的FromBody属性,启用application/x-www-form-urlencoded格式的绑定数据。

这是对现有 Web API 工作方式的改变。您可以在application/x-www-form-urlencoded 以外的情况下使用FromBody,例如application/jsonapplication/xml 等。

【讨论】:

  • 它没有帮助......也许我在 jquery.ajax 调用中有错误?可以看一下吗(我已经在问题底部添加了代码)
猜你喜欢
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 2021-02-21
  • 2012-05-07
  • 2015-04-18
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多