如何确定ColdFusion中的文件路径是绝对路径还是相对路径

时间:2012-05-04 08:49:56

标签: coldfusion

我有一个接受文件路径的函数。用户可以传递文件的绝对路径或相对路径。如果提供了相对路径,ExpandPath函数可以将其转换为绝对路径,如下所示:

<cfset filepath = ExpandPath("data/test.txt") >

..然后它返回:

C:\www\example\data\test

但是如果用户提供的绝对路径如下:

<cfset filepath = ExpandPath("C:\www\example\data\test") >

..它返回:

C:\www\example\C:\www\example\data\test

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

可能更灵活的方法是检查原始输入中的目录是否存在,如果不存在,请尝试expandpath。像这样:

<cfif directoryExists(myFileLocation)>
  <cfset theDirectory=myFileLocation)>
<cfelseif directoryExists(expandPath(myFileLocation))>
  <cfset theDirectory=expandPath(myFileLocation)>
<cfelse>
  <cfthrow message="Invalid directory!">
</cfif>

答案 1 :(得分:3)

您可以测试字符串并查看它是以C:\开头用于Windows还是用于开始用于unix,并将其用作if? 这可能是你的窗户检查:

<cfif reFindNoCase("[a-zA-Z]:\\",myFileLocation)>
   <!--- Is a absolute path --->
<cfelse>
   <!--- Is not an absolute path --->
</cfif>