我有一种上传文件的方法,该文件是我的解决方案的标准配置。但是,我找不到如何将文件传递给另一个方法。
这是我的代码:
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;
}
我遇到的问题是我无法将var传递给方法,所以我尝试传递一个文件,但这给了我一个错误,说明没有重载方法有这些参数。如何更改它以便我可以传入文件?
答案 0 :(得分: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()
的新对象。(你是从另一个控制器调用它吗?)如果两种方法都在同一个class,您只需调用方法而无需创建新对象。
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?)( 您可以通过依赖注入或最坏情况注入它,根据需要在控制器中手动创建此新类的对象)。你不应该从另一个控制器调用一个控制器。