FolderExists返回错误的值

时间:2017-07-06 08:24:42

标签: asp.net path server backslash

我正在尝试获取与我的网站页面不同的服务器上的文件的最后修改日期。问题是该文件的路径类似于\\ something.com \ foldername \ file.xlsx。我读到你不能使用包含双斜杠或反斜杠的路径的Server.MapPath。我尝试用一​​个,三个或四个反斜杠替换双反斜杠,但它不起作用。这是我的代码,直到现在:

<%
dim fs, f
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile(Server.MapPath("\\something.com\foldername\file.xlsx")) 
Response.Write("The file was last modified on: <h1 id='dateTime'>")
Response.Write(f.DateLastModified)
Response.Write("</h1>")
set f=nothing
set fs=nothing
%>

如果我将文件复制到包含代码的目录中,并将该行替换为..

set f=fs.GetFile(Server.MapPath("file.xlsx")) 

..它有效,但我不知道如何使其与原始文件一起使用。

有谁知道如何替换双反斜杠以便程序可以工作?如果我尝试使用我发布的代码,我会得到一个空白页面。

1 个答案:

答案 0 :(得分:1)

我认为你不知道相对和绝对路径之间的区别。

假设您要在您的网站上创建链接以下载xlsx,您可以创建这样的链接。

<a href="/foldername/file.xlsx">file.xlsx</a>

然而,服务器上的绝对路径类似于

C:\inetpub\wwwroot\something.com\foldername\file.xlsx

Server.MapPath所做的是将相对路径转换为absoule路径,以便文件可以位于普通文件系统中。所以你就像使用普通的html链接一样使用它。

Server.MapPath("/foldername/file.xlsx")

因此,如果您想知道上次修改日期,请立即执行此操作:

FileInfo file = new FileInfo(Server.MapPath("/foldername/file.xlsx"));
Label1.Text = file.LastWriteTime.ToString();