如何在asp.net核心web api上传文件

时间:2017-07-16 17:52:25

标签: c# asp.net asp.net-core

我正在尝试在Asp.net Core中实现文件上传。请参阅下面的endpoit:

    [HttpPost("upload")]
    [AllowAnonymous]
    public async Task<IActionResult> Post(List<IFormFile> files)
    {
        long size = files.Sum(f => f.Length);

        // full path to file in temp location
        var filePath = Path.GetTempFileName();

        foreach (var formFile in files)
        {
            if (formFile.Length > 0)
            {
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    await formFile.CopyToAsync(stream);
                }
            }
        }


        return Ok(new { count = files.Count, size, filePath });
    }

当我使用Postman测试它时,即使我选择了任何文件,我也会得到以下结果:

{
   "count": 0,
   "size": 0,
   "filePath": "/var/folders/24/rmgj9ypj37709tnhxr2hgtfr0000gn/T/tmpX0SwbF.tmp"
}

2 个答案:

答案 0 :(得分:2)

这应该引导你朝着正确的方向前进。该方法正在接收jQuery post对象。

    [HttpPost]
    public async Task<IActionResult> ReadFileHeaders(IFormFile file)
    {
        if (file != null)
        {
            using (var stream = new MemoryStream())
            {
                await file.CopyToAsync(stream);
                // Now the file is loaded into the stream variable
            }
        }

        return BadRequest("File required");
    }

答案 1 :(得分:0)

代码没有问题。 但是,在使用邮递员(或类似的邮递员)时,您需要在参数Illustration

上使用相同的名称(在您的情况下为“ files”)