c# - 这两种 Post 方法有什么区别

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

我对这两行之间的区别有点困惑:

req.OpenReadStream();

Request.Form.Files.GetFile("FileContent").OpenReadStream()

这是我目前所知道的,如果有误请纠正我,我知道它们都是为了读取文件,第一种方法只接受文件,但是第二种方法接受文件和一个 json 值,, 但我仍然不明白的是语法方面的差异

这是 post 方法的一个片段:

public IActionResult Post(IFormFile req)
{
    req.OpenReadStream();
    return Ok();
}

[HttpPost]
public IActionResult Post([FromForm] RequestModel req)
{
    Request.Form.Files.GetFile("FileContent").OpenReadStream()
    return Ok();
}

//....
public class RequestModel
{
    public string FileContent { get; set; }
    public string SomeRandomString { get; set; }    
}

最佳答案

没有。他们都属于IFormFile .

唯一的区别是您访问界面的方式。

在您的第一个示例中,您直接访问它,因为它被传递到您的方法的构造函数中。

在您的第二个示例中,您从 Files 访问它收藏HttpRequest通过使用 GetFile 获取文件返回所述接口(interface)的方法。

正如Panagiotis Kanavos所说,后者根本无法测试。

关于c# - 这两种 Post 方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53373809/

相关文章:

c# - BuildManager.Add Reference Assembly in Net CORE

c# - WEB.API 不会在 POST 方法中反序列化传入的 JSON

c# - 将对象绑定(bind)到组合框会填充列表,但选择更改不会在 CSharp 中的对象中更新

c# - 具有 NULL 对象的 NSNotificationCenter.PostNotificationName() 不会触发 : bug or as designed?

asp.net-core - 通过 JWT token 授权

.net-core - 如何使用 Entity Framework Core 更新记录?

c# - 数据集的克隆

c# - 第一次访问属性时的编码风格和支持字段成员为空

c# - 如何将 ASP.NET Core 应用程序和 Redis 一起 dockerize?

c# - 根据上下文源将 Serilog 日志过滤到不同的接收器?