2011-09-27 154 views
0

你好代码专家, 我正在上传一些文件到虚拟目录。对于虚拟目录,我给喜欢虚拟路径问题

"/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"; 

它工作在我的本地罚款,但不是在活的服务器的路径。它不在活动服务器上传文件。

如果我将其更改为

"~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"; 

然后将它的工作?如果没有,那我该如何将它映射到虚拟目录?

回答

1

阅读关于〜means的文档。你会发现第二种方法总是有效的,第一种方法不是。首先确定文件夹是/ Uploads(在Web服务器根目录下)。

+0

谢谢你告诉我,第二种方法是否也会在现场工作呢? – user728630

2

使用功能使用Server.Mappath

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx

Server.MapPath("~/Uploads/" + DatabaseName + "/" + REOID + "/" + "ExternalDocument" + "/"); 
+0

我尝试过使用它,但它现在不在我的本地工作。没有图片上传。 – user728630

+0

当您尝试上传文件时是否会返回特定错误? – Markis

+0

其实我正在使用一个web处理程序文件将图像写入虚拟目录,当我像你说的那样给出的时候没有被调用,但是当我使用像“〜/ Uploads /”+ DatabaseName +“/” + REOID +“/”+“ExternalDocument”+“/”; – user728630

1

+1 @MarkisT。建议你也让框架为您做组合:如果您仍然有问题

http://msdn.microsoft.com/en-us/library/dd782933.aspx

using System.IO; 
using System.Web; 

var path = Path.Combine("~/Uploads", DataBaseName, REOID, "ExternalDocument"); 
var fullPath = Server.MapPath(path); 

;会建议您检查本地和服务器上的fullPath,以了解与虚拟路径和绝对路径相关的情况。您也可能在服务器上存在安全问题,尤其是在您恰好在应用程序目录之外编写代码时。当然,在这种情况下会期待例外。

+0

Iam得到错误'No Overload for method'Combine'需要4个参数 – user728630

+0

它在.NET Framework 4+中。在3.5及更低版本中,您将不得不使用多个Path.Combine语句(每个2个参数)或手动梳理。有关检查Server.MapPath结果的建议仍然存在 - 了解您实际写入的位置是解决问题的关键。 – dividius