代码之家  ›  专栏  ›  技术社区  ›  Mohamoud Mohamed

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

  •  0
  • Mohamoud Mohamed  · 技术社区  · 7 年前

    所以我从chrome上得到了相同的错误,每个人都得到了不允许相同来源的错误。我在跑angular-4。x作为本地主机:4200。Im还运行iss localhost:#####5。所以我制定了一个cors策略并启用了它。调试时,我的IFormfile参数始终显示为null:

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

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

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

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alexei Levenkov    7 年前

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

    笔记

    • 深入到低级物体,如 HttpRequest 失去了使用操作获取参数的好处(如果必须模拟请求,则单元测试会更加困难)。
    • 操作参数的null值表示客户端代码的行为不符合您的要求-它可能从具有不同名称的控件发送文件。更好的做法是理解它发生的原因并解决问题(即,您可能在操作中对参数使用了错误的名称),而不是尝试破解。