保存路径,虚拟目录和静态位置

时间:2012-01-27 17:56:46

标签: c# asp.net

我上传的文件已上传到网络应用程序根目录中的文件夹,即我有

string savePath = @"~/documentation/"

string filename = Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath(savePath) + filename);

并且工作正常,将文件上传到WebApp / documentation / filename.abc

问题是,我想更改文档位置,以便在从开发推送到生产时不必移动该文件夹。所以我做了以下

在Web.Config中:

<appSettings>
    <add key="DocumentationLocation" value="C:\Documentation\" />
</appSettings>

在代码中:

string savePath = ConfigurationSettings.AppSettings["DocumentationLocation"];

string filename = Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath(savePath) + filename);

我认为这可以完全相同,将文件保存到web.config中指定的文件夹。

但是,当我现在尝试上传文档时出现错误,其中包含:

  

'C:\ TM_Documentation \'不是有效的虚拟路径。

任何想法我做错了所以我可以修复它并将文件保存在Web应用程序目录之外?谢谢。

2 个答案:

答案 0 :(得分:1)

删除Server.MapPath(),您不需要服务器为您映射路径,因为您已经提供了完整路径。

答案 1 :(得分:0)

如果您的路径为“C:\ Documentation \”,则不需要Server.MapPath。 仅当您的配置具有相对路径(例如“〜/ Documentation /”

)时才需要Server.MapPath

试试这个

FileUploadControl.SaveAs(savePath + filename);