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