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

本文关键字:客户端 控制器 MVC 路径 文件 | 更新日期: 2023-09-27 18:35:45

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

    <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.但是该文件不存在。我所需要做的就是将文件从一个位置复制到另一个位置。

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

>sourceFile上传文件后,它会在服务器上包含该文件。您需要调用 sourceFile.SaveAs 将文件保存到您指定的服务器上的路径。

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

该文件路径实际上并不存在。你之所以这么认为,是因为你不明白Path.GetFullPath是做什么的。对于相对路径,它将添加当前工作目录。就这样。它并没有真正将其保存在某个地方或检查它是否存在。

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

另请参阅我对远程服务器中文件的完整路径问题的回答,其中涵盖了您问题的其他一些方面。