如何将完整的文件路径从客户端传递到MVC控制器?

时间:2014-12-29 19:06:27

标签: c# html .net asp.net-mvc

我需要将选定的文件路径传递给控制器​​。这是我表格的一部分:

    <input type="file" name="sourceFile" />
    <input type="submit" name="Submit" id="Submit" value="Upload" />

这是我的行动方法:

    [HttpPost]
    public ActionResult MyActionMethod(System.Web.HttpPostedFileBase sourceFile)
    {
        string path = Path.GetFullPath(sourceFile.FileName);
        ...            
        return View();
    }

但不是真正的道路,我得到C:\Program Files (x86)\IIS Express\myFile.csv。 但那里的文件不存在。我只需要将文件从一个位置复制到另一个位置。

2 个答案:

答案 0 :(得分:2)

上传后,

sourceFile包含您服务器上的文件。您需要调用sourceFile.SaveAs将文件保存到您指定的服务器上的路径。

服务器没有充分理由知道文件存储在客户端文件系统中的哪个位置。所有应用程序应该关注的是上传后的实际文件。

答案 1 :(得分:0)

该文件路径实际上并不存在。您认为这是因为您不了解Path.GetFullPath的作用。对于相对路径,它会添加当前工作目录。这就是全部。它并没有真正将它保存在某处或检查它是否存在。

您创建的实际文件路径。您可以使用客户端提供的文件路径作为开头,但您必须在服务器上创建一个位置以将其保存在那里。您使用HttpPostedFileBase中传递的数据并将其保存在某处。

另请参阅我对Full path of the file from the remote server问题的回答,该问题涵盖了您问题的其他方面。