【问题标题】:FolderExists returning wrong valueFolderExists 返回错误的值
【发布时间】:2017-07-06 08:24:42
【问题描述】:

我正在尝试获取与我拥有网站页面的服务器不同的服务器上的文件的最后修改日期。问题是该文件的路径类似于 \\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")) 

..它可以工作,但我不明白如何使它与原始文件一起工作。

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

【问题讨论】:

    标签: asp.net path server backslash


    【解决方案1】:

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

    假设你想在你的网站上创建一个链接来下载 xlsx,你创建一个这样的链接。

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

    但是服务器上的绝对路径类似于

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

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

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

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

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

    【讨论】:

    • 这是否意味着该文件已经位于something.com 上?它不是。基本上,我的网站在 somethingelse.com 上,所以 Server.MapPath("/foldername/file.xlsx") 不起作用,因为它在 something.com 上查找文件,是吗?
    • 您的意思是something.com 是一个实际的网站,而不是您服务器上的文件夹名称。那么这将不起作用,因为您无权访问文件系统。唯一的方法是下载该文件,将其存储在您自己的服务器上并检查那里的属性。
    猜你喜欢
    • 1970-01-01
    • 2015-06-19
    • 2019-02-03
    • 2014-01-16
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多