2016-01-06 56 views
-2

我有一種方法可以上傳我的解決方案的標準文件。但是,我無法找到如何將文件傳遞給另一種方法。將Var傳遞給MVC中的文件上傳方法

這裏是我的代碼:

var file = Request.Files[0]; 

if (file != null && file.ContentLength > 0) 
{ 
     _fileName = new FileController().UploadFile(file, "Tickets", ticketReturn.TicketNumber.ToString()); 
} 



public string UploadFile(File file, string SubPath, string folder) 
{ 


     var fileName = Path.GetFileName(file.FileName); 

     string path = ConfigurationManager.AppSettings["MediaFolder"] + "\\" + SubPath + "\\" + fileName; 

     var FullPath = Path.Combine(Server.MapPath("~/Images/"), fileName); 

     file.SaveAs(fullPath); 


     return fileName; 
} 

我遇到的問題是,我不能一個變種傳遞給方法,所以我想傳遞一個文件,但是這給了我一個錯誤,說明不超載方法這些論據。我怎樣才能改變它,所以我可以傳入文件?

+0

即時在這裏猜測'File'參數中的'File'類型是'System.IO.File',這不是你想要的。 –

+0

謝謝@ DanielA.White - 那我想要什麼? – djblois

回答

3

您在UploadFile()方法中使用了錯誤的參數類型。

Request.Files中的項目類型爲HttpPostedFileBase而不是File。因此請更新您的方法以使參數具有正確的類型。

public string UploadFile(HttpPostedFileBase file, string SubPath, string folder) 
{ 
    //do something with the file now and return some string 
} 

另外,我不明白爲什麼要創建您的FileController()的新對象。(你從不同的contorller調用它?)如果這兩種方法都在同一個班,你可以簡單地調用該方法而不創建新對象。

public ActionResult CreateUserWithImage() 
{ 
    if (Request.Files != null && Request.Files.Count>0) 
    { 
     var f = Request.Files[0]; 
     UploadFile(f,"Some","Abc"); 
    } 
    return Content("Please return something valid here"); 
}  

private string UploadFile(HttpPostedFileBase file, string SubPath, string folder) 
{ 
    //do something with the file now and return some string 
} 

如果要調用從不同的控制器操作此方法,你應該考慮移動這個UploadFile方法不同的公共類(UploadManager.cs?),它可以從任何你想要的控制器使用(您可以通過依賴注入或最壞情況注入它,根據需要在您的控制器中手動創建這個新類的對象)。你不應該從另一個調用一個控制器。

+0

謝謝,Shyju :) – djblois