使用Postman上传ASP核心WebApi测试文件

Zeu*_*s82 12 c# asp.net-web-api postman .net-core

我创建了一个采用任意文件的端点:

[HttpPost()]
public async Task<IActionResult> CreateFile(IFormFile file)
Run Code Online (Sandbox Code Playgroud)

当我用Postman测试时,它file总是为空.

这是我在Postman做的事情:

邮差截图

我究竟做错了什么?

Zeu*_*s82 22

感谢@ rmjoia的评论我得到了它的工作!这是我在Postman中必须做的事情:

在此输入图像描述


SLD*_*Dev 10

上载一个或多个文件的完整解决方案如下所示:

  • 此操作用于上传多个文件

    // Of course this action exist in microsoft docs and you can read it.
    HttpPost("UploadMultipleFiles")]
    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);
        }
    
        // Process uploaded files
    
        return Ok(new { count = files.Count, path = filePath});
    }
    
    Run Code Online (Sandbox Code Playgroud)

邮递员图片显示了如何将文件发送到此端点以上传多个文件: 在此处输入图片说明

  • 此操作用于上传单个文件

    [HttpPost("UploadSingleFile")]
    public async Task<IActionResult> Post(IFormFile file)
    {
    
        // Full path to file in temp location
        var filePath = Path.GetTempFileName();
    
        if (file.Length > 0)
            using (var stream = new FileStream(filePath, FileMode.Create))
                await file.CopyToAsync(stream);
    
        // Process uploaded files
    
        return Ok(new { count = 1, path = filePath});
    }
    
    Run Code Online (Sandbox Code Playgroud)

邮递员图片显示了如何将文件发送到此端点以上传单个文件: 在此处输入图片说明

  • 只是需要注意的是,使用此 Postman 文件上传方法时,请确保将表单数据中的“Key”名称与方法输入参数名称相匹配,否则文件将显示为空。例如:如果方法是 UploadFile(IFormFile myFile),请确保在 Postman 中将键字段设置为“myFile”。 (3认同)