ASP.NET 5:通过WebApi上传文件

时间:2015-11-22 14:48:26

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

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

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

Inside Import方法a可以保存Request.Body,看起来是正确的:

  

------ WebKitFormBoundaryZLHvtGDqa5zp0JHB Content-Disposition:form-data;命名="上传&#34 ;;文件名=" test.b3d"   Content-Type:application / octet-stream

     

Hello world content!

但上传变量始终为null!我应该修复什么内容文件内容"上传"变量?

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

1 个答案:

答案 0 :(得分:1)

删除参数上装饰的FromBody属性以启用application/x-www-form-urlencoded格式的绑定数据。

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