到目前为止,我知道如何使用以下代码将文件上传到解决方案中的文件夹。
string root = HttpContext.Current.Server.MapPath("~/upload");
如何将文件保存到解决方案中以外的其他位置,即映射到我的PC的服务器位置。
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");
请确保正确设置权限。
你的逻辑似乎令人困惑。使用 Server.MapPath - 返回与指定虚拟路径对应的物理文件路径。
但是您在第二个语句中将物理位置传递给 Server.MapPath,这不符合 Server.MapPath 的全部目的。
string root = HttpContext.Current.Server.MapPath("/Z:/UploadFolder"); **INCORRECT**
理想情况下,您需要创建一个映射到"/Z:/UploadFolder"的虚拟目录,并将其命名为"upload"。
string root = HttpContext.Current.Server.MapPath("~/upload");
注意:您需要传递显式凭据才能从 ASP.NET 访问网络共享。建议的方法是使用标识模拟,完成后使用相同的逻辑重试。
<configuration>
<system.web>
<identity impersonate="true" />
</system.web>
</configuration>