如何在ASP.NET Core Web API中上传文件

3

我正在尝试在Asp.net Core中实现文件上传。请查看我的端点如下:

    [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"
}

请提供更多信息,例如您发送的请求应该如何处理,使用了哪种MIME类型等。 - Tseng
2个回答

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");
    }

0

代码没有问题。 但是当使用Postman(或类似工具)时,您需要在参数Illustration上使用相同的名称(在您的情况下为“files”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接