Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用一个文件上传器(MVC)保存不同格式的文件_C#_Asp.net Mvc - Fatal编程技术网

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

C# 使用一个文件上传器(MVC)保存不同格式的文件,c#,asp.net-mvc,C#,Asp.net Mvc,我正在从MVC的查看页面导入和保存不同的文件。到目前为止,我能够上传不同的格式并保存在数据库中。有3个控制器操作用于导入文本文件、excel文件和csv文件 我只想要一个文件上传器。根据我们上传的文件,它需要调用特定的函数并保存数据。我怎样才能做到这一点?如果我为3种不同的格式保留3个单选按钮来保存/调用特定的操作方法,这会是一个好主意吗 [HttpPost] public ActionResult Upload(HttpPostedFileBase file) {

我正在从MVC的查看页面导入和保存不同的文件。到目前为止,我能够上传不同的格式并保存在数据库中。有3个控制器操作用于导入文本文件、excel文件和csv文件

我只想要一个文件上传器。根据我们上传的文件,它需要调用特定的函数并保存数据。我怎样才能做到这一点?如果我为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();
    }

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

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    var extension = Path.GetExtension(file.FileName);    
}
然后,相应地,您可以重定向到特定的操作,或者调用相应的save方法

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

我希望这能给你一个想法。

我有3个控制器动作。如何根据我在查看页面上载的文件调用特定的一个操作方法?@user7090664查看我的更新答案。它会让你了解这一点。如果你仍然面临这个问题,让我知道。是的,我有这个想法。。我想知道,如果我在查看页面中使用单选按钮,并根据我选择的文件,它将重定向到该控制器?它会工作吗?现在,我在一个视图页面中有3个文件上传器和3个控制器操作方法。但是,我想要上传一个文件和保存数据的3种操作方法,实现这一点的最佳方法是什么?您的意思是,如果用户选择xls单选按钮,那么将调用Controler1/UploadXls方法。如果选择docx单选按钮,则调用Controller2/UploadDocx?如果这是真的,那么为什么需要使用单一上传方法呢?我认为这是不合理的。Raher,保持一个如上所述的上传方法,不管从哪个上下文调用它。然后执行所需的操作。