代码之家  ›  专栏  ›  技术社区  ›  Tales

C中文件上载字段的动态名称#

  •  0
  • Tales  · 技术社区  · 6 年前

    我为我的公司创建了一个动态表单生成器。它允许用户使用不同的名称创建不同的表单域。处理表单很容易,但文件上载一直是一个噩梦,因为控制器不知道表单字段的名称。 在我的示例中,表单字段可以如下所示:

    <input type="file" name="certificate" accept=".pdf" />
    

    <input type="file" name="course-certificate" accept=".pdf, .docx" />
    

    它甚至可以在一个表单中包含一个或多个文件字段

    问题是,当它在提交表单后转到post方法时,我应该有一个文件参数。它可以是单个文件,如:

    [HttpPost]
    public ActionResult Create(HttpPostedFileBase file) // For a single file upload
    {
    }
    

    [HttpPost]
    public ActionResult Create(IEnumerable<HttpPostedFileBase> files) // For multiple file uploads
    {
    }
    

    但我需要发送文件的随机名称,甚至可以有一个在中间冲刺。解决这个问题的方法是什么? 我不想在发送表单之前使用任何类型的jquery来准备它,我希望能够在创建表单时发送它,并像那样在我的控制器中接收它。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tetsuya Yamamoto    6 年前

    HttpRequest.Files <input type="file" /> for foreach HttpPostAttribute

    for (int i = 0; i < Request.Files.Count; i++)
    {
        var uploadedFile = Request.Files[i] as HttpPostedFileBase;
    
        if (uploadedFile.ContentLength > 0)
        {
            // do something
        }
    }
    

    foreach (string fileName in Request.Files)
    {
        var uploadedFile = Request.Files[fileName] as HttpPostedFileBase;
    
        if (uploadedFile.ContentLength > 0)
        {
            // do something
        }
    }
    

    Request.Files here uploadedFile.FileName