如何使用Server.MapPath将文件上传到映射到我的计算机

时间:2018-06-15 11:51:24

标签: 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 server so where I am going wrong?

3 个答案:

答案 0 :(得分:1)

如果您有相对路径并且想要使用项目路径,则应使用const subject = new Subject<string>(); const next = (value: number) => subject.next((value * value).toString()); subject.subscribe(value => console.log(value)); next(1); // logs '1' next(2); // logs '4' 。对于另一条路径,您不需要MapPath。就像这样使用它:

MapPath

答案 1 :(得分:0)

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

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

确保正确设置权限。

答案 2 :(得分:0)

你的逻辑似乎令人困惑。使用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访问网络共享。建议的方法是使用Identity模拟,一旦使用相同的逻辑重试。

<configuration>
  <system.web>
    <identity impersonate="true" />
  </system.web>
</configuration>