C# 如何使用Server.MapPath将文件上载到映射到计算机上的服务器上

C# 如何使用Server.MapPath将文件上载到映射到计算机上的服务器上,c#,asp.net-mvc,file-upload,knockout.js,server.mappath,C#,Asp.net Mvc,File Upload,Knockout.js,Server.mappath,到目前为止,我知道如何使用下面的代码将文件上载到解决方案中的文件夹 string root = HttpContext.Current.Server.MapPath("~/upload"); 如何将文件保存到解决方案之外的其他位置,即映射到我的电脑的服务器位置 string root = HttpContext.Current.Server.MapPath("/Z:/UploadFolder"); I have tried this but its not saving to the serv

到目前为止,我知道如何使用下面的代码将文件上载到解决方案中的文件夹

string root = HttpContext.Current.Server.MapPath("~/upload");
如何将文件保存到解决方案之外的其他位置,即映射到我的电脑的服务器位置

string root = HttpContext.Current.Server.MapPath("/Z:/UploadFolder"); I have tried this but its not saving to the server so where I am going wrong?

当您有相对路径并希望使用项目的路径时,应使用
MapPath
。对于其他路径,您不需要
MapPath
。就像这样使用它:

string root ="Z:\\UploadFolder";

您可以将IIS中的虚拟目录映射到要保存到的位置。例如,将UploadFolder的虚拟目录映射到z:\UploadFolder。然后,这将起作用:

string root = HttpContext.Current.Server.MapPath("~/upload");

确保正确设置权限。

您的逻辑似乎很混乱。Use Server.MapPath-返回与指定虚拟路径对应的物理文件路径

但是,在第二条语句中,您正在将物理位置传递给Server.MapPath,这无法实现Server.MapPath的全部功能

string root = HttpContext.Current.Server.MapPath("/Z:/UploadFolder"); **INCORRECT**
理想情况下,您需要创建到“/Z:/UploadFolder”的虚拟目录映射,并将其命名为“upload”

注意:您需要传递显式凭据才能从ASP.NET访问网络共享。建议的方法是使用身份模拟,一旦完成,请使用相同的逻辑重试



MapPath只是将根站点的相对路径~\替换为该文件夹本地计算机上正确的完整操作系统路径名。这与服务器上可用的共享名或映射驱动器无关。我认为您误解了MapPath函数的用途
string root = HttpContext.Current.Server.MapPath("~/upload");