0

当 Content-Type 设置为“multipart/form-data”时,上传方法不会触发控制器方法。如果 Content-Type 设置为 'application/json' 方法将被触发,但文件对象将为空。

这是我的客户(角度 4)实现:

    public uploader = new FileUploader({
        url: "/api/mycontroller/uploadfile",
        allowedFileType: ["pdf"],
        headers: <Headers[]>[
            //{ name: 'Content-Type', value: 'application/json' }
            { name: 'Content-Type', value: 'multipart/form-data' }
        ]
    });
    
     save() {
        //...
        this.uploader.queue.reverse()[0].upload();
     }

这是我的 web api 控制器(.net core 1.0):

[Route("uploadfile")]
[HttpPost]
public async Task<ActionResult> UploadFile([FromBody]IFormFile file)
{
   //...
}

也许我忘了添加一些特殊参数或其他东西?

4

1 回答 1

2

我相信你的控制器方法应该是无参数的,你应该通过 HttpContext 获取你的文件,但我现在没有办法测试它,所以我不能确定......但我认为它应该是这样的:

[Route("uploadfile")]
[HttpPost]
public async Task<ActionResult> UploadFile()
{
    var file = HttpContext.Current.Request.Files[0];
    //...
}
于 2017-07-13T14:27:19.790 回答