2017-03-18 21 views
0

我正在從MVC中的視圖頁導入和保存不同的文件。截至目前,我能夠上傳不同的格式並保存在數據庫中。有3個控制器可以導入文本文件,excel文件和csv文件。使用一個文件上傳器(MVC)保存不同的格式文件

我想只有一個文件上傳器。根據我們上傳的文件,它需要調用該特定功能並保存數據。我怎樣才能做到這一點?如果我爲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

是的,你可以做到這一點。從您的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 
} 

我希望這給你的想法。

+0

我有3個控制器操作。如何根據我在視圖頁面中上傳的文件調用特定的一個操作方法? – user7090664

+0

@ user7090664看到我更新的答案。它讓你想到這一點。如果您仍然遇到問題,請告訴我。 – Zeeshan

+0

是的,我有想法..我想知道如果我在視圖頁面中使用單選按鈕,並基於我選擇它的文件將重定向到該控制器...?它會起作用嗎? – user7090664

相關問題