使用 HttpContext 请求接收文件的对象是否有效/安全?

Is using HttpContext to request objects for receiving files efficient / safe?

所以我从 chrome 那里得到了同样的错误,每个人都得到了不允许同源。我是 运行 angular-4.x 作为 localhost:4200。我也 运行 iss localhost:#####5。所以我制定了一个cors策略并启用了它。我的 IFormfile 参数在调试时一直显示为空:

public async Task<IActionResult> Picload(IFormFile file)//---always null

所以这很奇怪,因为当我检查 HttpContext 进行进一步挖掘时,我发现我的图像来自 angular in:

  var file =  _accessor.HttpContext.Request.Form.Files[0];

访问者通过启动使用单例并注入到控制器构造函数中,因此这种安全性是明智且高效的。我正在检查文件扩展名。我觉得我终于打败了 chrome,但不知道我这样做还能想到什么。

使用 HttpContext.Request.Form.Files[0] 会很好,因为它只是访问 POST 请求字段的另一种方式(通常你 不应该这样做 在 ASP.Net/WebAPI 代码中)

备注

  • HttpRequest那样深入到较低级别的对象会失去采取行动获取参数的好处(如果必须模拟请求,单元测试会更加困难)。
  • 操作参数的 null 值表示客户端代码未按照您想要的方式运行 - 它可能从具有不同名称的控件发送文件。最好理解它发生的原因并解决问题(即您可能在操作中使用了错误的参数名称)而不是试图破解。