使用一个文件上传器(MVC)保存不同的格式文件

时间:2017-03-18 01:22:11

标签: c# asp.net-mvc

我正在从MVC中的视图页面导入和保存不同的文件。截至目前,我可以上传不同的格式并保存在数据库中。导入文本文件,excel文件和csv文件有3个控制器操作。

我想只有一个文件上传器。根据我们上传的文件,它需要调用该特定函数并保存数据。我怎样才能做到这一点?如果我保留3种不同格式的3个单选按钮来保存/调用特定的动作方法,那么这是一个好主意吗?

[HttpPost]
    public ActionResult Upload(HttpPostedFileBase file)
    {
        var extension = Path.GetExtension(file.FileName);
        switch(extension.ToLower())
        {
            case "xls":
                return RedirectToAction("ImportFromExcel", "Contact", new { data = file });

            case "txt":
                return RedirectToAction("ImportText", "Contact", new { data = file });
            case "csv":
                return RedirectToAction("ImportToCSV", "Contact", new { data = file });

        }
        return View();
    }

1 个答案:

答案 0 :(得分:1)

是的,你可以做到这一点。从您的HttpPostedFileBase对象,您可以了解已发布文件的确切文件扩展名。像:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    var extension = Path.GetExtension(file.FileName);    
}

然后,相应地,您可以重定向到特定操作,或调用相应的保存方法。

switch (extension.toLower())
{
  case "xls":
      return RedirectToAction("SaveXlsData", "SomeController", new { data = file });
 //or call SaveXlsData(); from here
}

我希望这能让你有所了解。