4

我有一个接受文件路径的函数。用户可以传入文件的绝对路径或相对路径。如果提供了相对路径,该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

我该如何解决这个问题?

4

2 回答 2

7

一种可能更灵活的方法是检查原始输入中的目录是否存在,如果不存在,请尝试扩展路径。像这样的东西:

<cfif directoryExists(myFileLocation)>
  <cfset theDirectory=myFileLocation)>
<cfelseif directoryExists(expandPath(myFileLocation))>
  <cfset theDirectory=expandPath(myFileLocation)>
<cfelse>
  <cfthrow message="Invalid directory!">
</cfif>
于 2012-05-04T15:37:03.407 回答
3

您可以测试该字符串并查看它是否以 C:\ 开头(对于 windows 或 \\ 对于 unix),并将其用作 if?这可能是您的窗口检查:

<cfif reFindNoCase("[a-zA-Z]:\\",myFileLocation)>
   <!--- Is a absolute path --->
<cfelse>
   <!--- Is not an absolute path --->
</cfif>
于 2012-05-04T09:30:30.847 回答