如何使用ajax在ASP.NET5中上传文件?

时间:2016-01-27 00:18:56

标签: asp.net angularjs file-upload asp.net-core ng-file-upload

我读过很多关于使用传统html表单上传文件并在服务器端使用IFormFile(ASP.NET5 RC)的帖子。但是,我想使用ajax(特别是ng-file-upload)上传文件,并且在使用ajax时,IFormFile似乎不起作用。请求有效负载如下所示:

------WebKitFormBoundaryqGdWTqE8FFBpVPbA
Content-Disposition: form-data; name="file[0]"; filename="mydoc.pdf"
Content-Type: application/pdf


------WebKitFormBoundaryqGdWTqE8FFBpVPbA--

我相信这些文件是在Request.Body中传递的,但我不确定如何从那里提取它们。

2 个答案:

答案 0 :(得分:1)

我刚刚使用Kendo UI上传控件执行此操作,我还发现未填充IFormFile参数。我使用Request.Form.Files

工作了
 foreach (var file in Request.Form.Files)
        {
                var fileBytes = new byte[file.Length];

                await file.OpenReadStream().ReadAsync(fileBytes, 0, (int)file.Length);

                SaveDoc(fileBytes, Path.GetFileNameWithoutExtension(fileName), docTypeId, enrollmentId, Path.GetExtension(fileName).Replace(".", ""), comments: comments);
        }

答案 1 :(得分:0)

当您逐个上传每个文件时,它会被填充:

[HttpPost("upload")]
public async Task<IActionResult> Upload(IFormFile file)
{
    ...
}